我想在c中实现重复的cat函数。我遇到了分段错误,我无法找到原因。从命令行读取参数时出现分段错误
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
char* s; /* input string */
int c;
if(argc==1){
while (gets(s)){
puts(s);
}
}
else{
FILE *file = fopen("./argv[1]", "r");
while((c=fgetc(file))!=EOF){
fputc(c,stdout);
}
fclose(file);
}
return 0;
}
首先,你应该调试你的程序。如果你不知道该怎么做,这是一个完美的时间学习。这几乎总是会立即为您提供错误信息,从而为您节省长时间的搜索时间。其次,你从来没有为s分配内存。最后,你想打开'./argv [1]',而不是'“./argv[1]”'。 – Zeta
啊是的,今天早些时候,每天我写东西到地址什么也没有分配问题。太本地化了,投票结束。 – Lundin
@Lundin是的,恐怕在今天的日常工作中还有更多的这个问题在SO ... -.- – 2013-04-16 06:33:05