【发布时间】:2013-06-01 00:17:15
【问题描述】:
我有一个基本上从文件中读取整数的函数:
FILE *file;
file = fopen("filename.txt", "r");
fscanf(file, "%d", &(*pn));
fscanf(file, "%d", &(*pm));
fscanf(file, "%d", &(*pmax));
printf("*pm = %d\n", *pm);
printf("*pn = %d\n", *pn);
printf("*pmax = %d\n", *pmax);
首先我尝试了以下文件:
5 4
128
如我所愿,我的输出是正确的:
*pm = 4
*pn = 5
*pmax = 128
但真正的文件是:
P2
5 4
128
我希望我的输出与以前一样,但后来我得到了:
*pm = 0
*pn = 0
*pmax = 0
出了什么问题?
【问题讨论】:
-
您需要跳过开头的“P2”。在读取整数之前尝试使用
fscanf(file, "\n")。 -
你应该真正展示你对
pn、pm和pmax的声明和初始化。使用&(*pn)是一种晦涩难懂的写法pn。 -
这就是你不测试 fscanf 的返回值得到的结果,它给出了成功转换的项目数。