Fopen return NULL based on
现在我有一个文件要读取,我想在控制台上输出,但它会抛出一个错误,因为fp返回NULL这里是一个片段
#include<stdio.h>
int main(char argc,char **argv)
{
if(argc < 2)
{
printf("Usage:\t");
printf("Hash File path");
}
printf("Hash File : %s\n", argv[1]);
FILE *fp = fopen("argv[1]","r");
if(fp == NULL)
{
fprintf(stderr,"Can't open %s\n", argv[1]);
}
else
{
char buff[100];
while(!feof(fp))
{
if(fgets(buff,100,fp) == NULL) break;
fputs(buff,stdout);
}
fclose(fp);
}
return 0;
}
whenever I pass file Path E:\design\test.txt from the command line it always shows error report "Can't open...." like this
所以困惑是
why Fopen Failed to read from Command line?
1 回答
代码中几乎没有问题 . 首先,这个
是错的 .
fopen()
的第一个参数应该只是argv[1]
而不是"argv[1]"
. 例如此外,如果
argc<2
为真,那么仅仅写入printf()
是不够的,您必须要求用户提供正确的命令行输入并且不要让用户继续进行 . 它应该是其次,阅读here为什么
feof()
是错误的 . 你可以像使用它一样代替