1

我一直在尝试使用 fscanf 来读取我的应用程序上的输入文件。

这是输入文件

3
Process#1 - 2Kb
3
exec 20

io 5

exec 50

Process#2 - 8Kb

1

exec 100

Process#3 - 8Kb

4

exec 50

io 50

exec 50

io 50

首先,我想阅读第一个“3”,我这样做没有问题。

之后,我需要阅读 # 之后的信息(即 1)和“kb”字符串之后的数字(即 2)。

为什么这个 fscanf 没有这样做?

fscanf(inputFile, "Process#%d - %dKb", &id, &mem ); 

我该怎么做 ?

提前致谢

4

1 回答 1

3

可能是因为 in 之后留下的换行符3没有被Pin识别Process

这也是很多人避而远之的原因scanf();它通常更容易使用fgets()或相关功能(但不是 gets()!)然后使用sscanf().


演示代码

请注意从scanf(). 如果你不这样做,你将不知道什么时候出了问题。请注意,检查也是针对正确的转换次数。

#include <stdio.h>
int main(void)
{
    int i;
    int id;
    int mem;

    if (scanf("%d", &i) != 1)
        printf("oops!\n");
    /* With    space - reads past newline on first line */
    /* Without space - prints 'thank goodness!' */
    if (scanf(" Process#%d - %d", &id, &mem) != 2)
        printf("thank goodness!\n");
    return 0;
}
于 2012-07-01T02:46:27.700 回答