gpt4 book ai didi

c - 从 stdin 读取文件时出错

转载 作者:行者123 更新时间:2023-11-30 16:33:37 24 4
gpt4 key购买 nike

下面的代码是从标准输入读取文件,但它找不到该文件,我也找不到错误。有人可以帮忙吗?

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);
}
}

最佳答案

在这一行中:

while (fgets(buffer, strlen(buffer), file) != NULL)

看起来 strlen(buffer) 返回 0,因为 buffer 在未显式初始化的全局数组中。因此它被初始化为0。因此 strlen 将返回 0。

在您的情况下,您可能应该使用sizeof(buffer)

附注

尝试使用调试器。您将立即看到在什么 if 条件下它会进入意外路径。

编辑 1:

当然,正如Weather Vane在评论中提到的,fgets返回带有\n字符(Enter键)的字符串。在将其用作文件名 ( Howto link ) 之前,您需要删除它。

关于c - 从 stdin 读取文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49679063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com