gpt4 book ai didi

c - 读一个C文件,多读一行,为什么?

转载 作者:太空狗 更新时间:2023-10-29 15:13:27 25 4
gpt4 key购买 nike

我不明白为什么文件指针会从文件中读取额外的一行,特别是最后一行,代码如下:

FILE *fp ;
fp = fopen ("mac_ip.txt", "r") ;
int mac;
char *ip = (char *) malloc(15);

while(!feof(fp)){
fscanf(fp,"%i",&mac);
fscanf(fp,"%s",ip);

printf("MAC: %i\n",mac);
printf("IP: %s\n",ip);
}

文件刚好有 20 行,但是第 20 行被打印了两次。

哪里出错了?

提前致谢。

最佳答案

因为在读取了最后两个值之后,您仍然没有到达 EOF。所以循环继续。在下一轮循环中,fscanf 实际上并没有像看起来那样第二次读取最后一行,fscanfs 失败,但 printfs 打印出上一轮循环的值。

关于c - 读一个C文件,多读一行,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10141359/

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