fscanf()发生错误,只读取最后一行?

问题描述 投票:0回答:1

这是代码,我想跳过最后两个字符串并读取第一个整数。

fp = fopen("test","r");
int i;
while (fscanf(fp,"%d %*s %*s",&i) > 0)
{
   printf("%d\n",i);
}

这是文本文件

4 jane good
0 may day
5 july hello

程序只进入循环一次,并且只返回最后一行的数字。

我想知道发生了什么?

c file scanf
1个回答
0
投票

此代码为我生成正确的输出:

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

int main(void) {
    FILE* fp = fopen("test","r");
    int i;
    while (fscanf(fp,"%d %*s %*s",&i) > 0)
    {
        printf("%d\n",i);
    }
    fclose(fp);
    return EXIT_SUCCESS;
}

输出:

4
0
5

我怀疑您在发布的本节之外的某个地方犯了错误。

更新:我还建议熟悉调试器,例如

gdb
。我个人通过逐步完成我的程序学到了很多 C 语言。

© www.soinside.com 2019 - 2024. All rights reserved.