#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define MAXLINE 512
main(int argc,char* argv[]){
FILE *fi;
fi=open(argv[1],"r");
char linie[MAXLINE],*p;
for ( ; ; ) {
p = fgets(linie, MAXLINE, fi);
linie[MAXLINE-1] = '\0';
printf("%s", linie);
}
fclose(fi);
};你好,我有这段代码,基本上我想做的是创建一个c源代码,用于打印命令行参数中给定的文件,有人能告诉我为什么我得到了command 11错误吗?谢谢
发布于 2013-04-13 23:12:04
for循环没有结束。fgets的结果,当你到达文件的末尾时,它会给出NULL。也不检查fopen的结果,这会在文件无法打开时生成NULL。argv[1]fopen之前,您不会检查argc是否至少为2
提示:如果您使用的是GCC,请使用-Wall -pedantic。
发布于 2013-04-13 23:10:30
您正在调用open(),您可能打算在其中调用fopen()。你不应该忽略编译器的警告。
另外,您应该检查fopen()的返回值,以确保它不是NULL。
发布于 2013-04-13 23:13:36
固定版本:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define MAXLINE 512
main(int argc,char* argv[]){
FILE *fi;
if (argc < 2)
return;
fi=fopen(argv[1], "r");
if (!fi)
return;
char linie[MAXLINE],*p;
for ( ; ; ) {
p = fgets(linie, MAXLINE, fi);
if (p == NULL)
break;
linie[MAXLINE-1] = '\0';
printf("%s", linie);
}
fclose(fi);
};https://stackoverflow.com/questions/15989222
复制相似问题