最近在用c编写一个模拟echo命令的程序,在用
make filename命令编译时没出现任何警告和错误信息,运行后(比如输入“./filename -n china linux”)却出现“段错误”的提示信息。在用
gcc -Wall -o filename filename.c命令编译时就出现了一大堆信息(也不懂是什麽意思)。
这是开始写的错误代码(错误的地方用红体标出)
#include
#include
void printn(char *str);
int main(int argc,char *argv[])
{
int i,j,k,t=1,num1,num2;
char op[10]; //保存命令行选项
char str[100]={'\0'}; //保存命令行选项后边的字符串(暂时将其大小定义为100)
j=0;
num1=0;
for(i=1;i {
if(argv[i][0]=='-')
{
for(k=1;k op[j]=argv[i][k]; //将命令行选项保存到op中
}
num1++; //计算“-”的个数
}
op[j]='\0'; //加结束标志
if(num1) t=i; //记录字符串的开始位置
num2=j; //记录选项的个数
while(argv[t][i]!='\0')
{
if(argv[t][i]!=' ')
{
str[i]=argv[t][i];
i++;
}
t++;
} //提取选项后的字符串保存在str中
if(num2!=0)
{
for(i=0;i {
switch(op[i])
{
case 'n': printn(str);
break;
}
}
}
else puts(str);
return 0;
}
void printn(char *str)
{
printf("%s",str);
}
后来经过检查发现将错误的地方用for(i=(t-1);i
strcat(str,argv[i]);
代替后问题解决。但现在还是不知这个“段错误”是什麽意思。
今天回头看看当初些的程序感觉到当初简直太幼稚了。犯了相当大的错误。首先上边写的简直就不叫代码。代码没有缩进风格,变量没有进行初始化就使用,出现断错误也就不足为奇了,这都是是不应该出现的问题。以前写的这些垃圾就暂时放在这里把,权当对自己的警戒!
阅读(1407) | 评论(1) | 转发(0) |