gpt4 book ai didi

c - 为什么要检查函数中 fscanf 返回值 < 1?

转载 作者:行者123 更新时间:2023-11-30 20:53:39 25 4
gpt4 key购买 nike

有人给我一个使用 fscanf 来解决的问题,其中指出了以下内容:

编写一个函数,用从文本文件读取的整数来初始化大小为 SIZE 的数组 x。该函数接收文件名作为参数。

解决方案如下所述。如果您扫描文件中的每个整数,为什么 fscanf 返回值 < 1?由于 fscanf 返回扫描的元素数量,它不应该 > 0 吗?

void init (char *name)
{
FILE *fp;
int i;

fp = fopen (name, "r");
if (fp == NULL)
{
printf ("no file\n");
return;
}

for (i = 0; i < SIZE; i++)
{
if (fscanf (fp, "%d", &x[i]) < 1)
{
printf ("got %d numbers\n", i);
return;
}
}

fclose (fp);
return;
}

最佳答案

您似乎误解了代码的意图:

for (i = 0; i < SIZE; i++)
{
if (fscanf (fp, "%d", &x[i]) < 1)
{
printf ("got %d numbers\n", i);
return;
}
}

如果fscanf未能读取整数,则返回(它返回扫描的项目数)。因此,此时该函数将返回(a)

如果你得到一个正整数,这意味着你成功读入该值并且循环将继续。

<小时/>

(a) 您可能应该在此处break 而不是返回,因为文件并未按目前的方式关闭。

关于c - 为什么要检查函数中 fscanf 返回值 < 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47067938/

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