我正在尝试用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!");
}
Run Code Online (Sandbox Code Playgroud)
我知道该文件存在,但是使用fgets输入了if块。
唯一的区别是使用:
gets(csvFile);
Run Code Online (Sandbox Code Playgroud)
代替
fgets(csvFile,256,stdin);
Run Code Online (Sandbox Code Playgroud)
谁能帮我理解这一点?提前致谢。
您需要删除结尾的换行符:
char csvFile[256], *p;
fgets(csvFile, sizeof csvFile, stdin);
if ((p = strchr(csvFile, '\n')) != NULL) {
*p = '\0'; /* remove newline */
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1525 次 |
| 最近记录: |