【发布时间】:2014-08-14 15:11:25
【问题描述】:
我正在尝试在 C 中从用户输入中获取字符串,以便程序可以打开选定的文件。
我尝试使用 fgets,因为我在许多线程上读到它是更安全的选择(而不是 gets)。
但是,当使用gets 存储字符串时,文件会打开,但使用fgets 则不会。
这是我正在使用的代码:
char csvFile[256];
FILE *inpfile;
printf("Please enter CSV filename: ");
fgets(csvFile,256,stdin);
printf("\nFile is %s\n",csvFile);
inpfile = fopen(csvFile,"r");
if(inpfile == NULL)
{
printf("File cannot be opened!");
}
我知道该文件存在,但使用 fgets 输入了 if 块。
唯一的区别是使用:
gets(csvFile);
代替
fgets(csvFile,256,stdin);
谁能帮我理解这一点? 提前致谢。
【问题讨论】:
-
man fgets 说:如果读取了换行符,将其存储到缓冲区中。