gpt4 book ai didi

c - fscanf 读取文件中不存在的行

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:19 25 4
gpt4 key购买 nike

我在 Fedora 15 计算机上,我有一个看起来像这样的简单代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
int x[50], y[50];
int i;
FILE *f_in = fopen("readtest.dat","r");

if (f_in == NULL) printf("No file...\n");
else
{
i = 0;
while (!feof(f_in))
{
fscanf(f_in,"%d %d",&x[i],&y[i]);
printf("%d %d\n", x[i], y[i]);
i++;
}
printf("I've read %d data.\n", i);
}
return 0;
}

要读取的文件是这个

1   1
2 2
3 3
4 4
5 5

但我不知道为什么输出看起来像这样。

1   1
2 2
3 3
4 4
5 5
1250259108 1250140145
I've read 6 data.

我以为我在文件中留下了一个空白的新行,但我没有。我用 gedit 和 vim 仔细检查了文件,没有发现空行。为什么我要阅读这行不存在的内容?

最佳答案

可能最后一次调用 fscanf 函数失败了。

These functions return the number of input items assigned. This can be fewer than provided for, or even zero, in the event of a matching failure.

打印前检查它的返回值。像这样的东西:

v = fscanf(f_in,"%d %d",&x[i],&y[i]);
if (v) {
// printf goes here
}

关于c - fscanf 读取文件中不存在的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8019940/

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