以下代码是从stdin读取文件,但它无法找到该文件,我无法找到错误。有人可以帮忙。
FILE *file;
char filename[200];// "ROMAN_in.txt";
char buffer[1000];
if (fgets(filename, sizeof(filename), stdin) == NULL) // from
stdin(keyboard) to store it in filename
{
printf("Error");
return 1;
}
file = fopen(filename, "r");
if (file == NULL)
{
fprintf(stderr, "File %s not found\n", filename);
return 1;
}
else
{
while (fgets(buffer, strlen(buffer), file) != NULL)
{
printf("%s", buffer);
}
}
答案 0 :(得分:0)
在这一行:
while (fgets(buffer, strlen(buffer), file) != NULL)
看起来strlen(buffer)
在未明确初始化的全局数组中从buffer
返回0。因此它被初始化为0。因此strlen
将返回0.
可能在您的情况下,您应该使用sizeof(buffer)
。
P.S。
尝试使用调试器。您将立即看到if
条件进入意外路径。
编辑1:
当然,正如评论中 Weather Vane 所述,fgets
会返回带有\n
字符的字符串(回车键)。在将其用作文件名(Howto link)之前,您需要摆脱它。