【问题标题】:Fscanf integers from file while ignoring surrounding charactersFscanf 文件中的整数,同时忽略周围的字符
【发布时间】:2019-03-12 17:50:39
【问题描述】:

我正在尝试从格式如下的文本文件中读取一系列整数:

int1
int2
int3
int4
int99

即。每个整数前面都有相同的字符串,在本例中为“int”。

我试过下面的代码,但是程序只打印第一个整数然后结束。

FILE *fp = fopen("data.txt", "r");
int num;
while (fscanf(fp, "int%d", &num) == 1)
    printf("%d\n", num);

fclose(fp);

【问题讨论】:

    标签: c scanf stdio


    【解决方案1】:

    在 %d 之后添加一个空格即可。

      (fscanf(fp1,"int%d ", &num)==1)
    

    【讨论】:

    • 谢谢,成功了。你能解释一下为什么会这样吗?我假设 fscanf 匹配空格,即使它不是给定的格式。
    【解决方案2】:

    这是因为你没有使用换行符,它在输入流中被遗漏了。

    只需如下更改您的fscanf。

    fscanf(fp, "int%d\n", &num) == 1
                     ^^-->read new line
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 2021-12-27
      相关资源
      最近更新 更多