【发布时间】:2017-05-22 20:33:52
【问题描述】:
我刚开始学习 C 中的文件处理,想知道是否可以通过从文件中读取输入来执行数学计算,这里是仅读取字符并在控制台上显示的代码:
int main(void)
{
FILE *p;
char a, b, c, ch;
p = fopen("numbers.txt", "a+");
while((ch = getc(p)) != EOF)
{
fscanf(p, "%c %c %c\n", &a, &b, &c);
printf("%c %c %c\n", a, b, c);
}
fclose(p);
return 0;
}
numbers.txt 包含(每个字符前有一个空格):
2 + 3
5 + 6
6 + 7
得到的输出是:
2 + 3
+ 6
+ 7
我无法理解为什么第一行输出符合预期但第二行和第三行缺少字符,即使在 numbers.txt 中的每个表达式之后都给出了新行。
【问题讨论】:
-
请查看
fopen的返回值。 -
1)
"a+"-->"r"2)while((ch = getc(p)) != EOF) { fscanf(p, "%c %c %c\n", &a, &b, &c);-->while(fscanf(p, " %c %c %c\n", &a, &b, &c) == 3) { -
还要检查来自
fscanf的返回值 -
查看fix here。
-
不要将
getc(...)分配给char;它返回int是有原因的。
标签: c file-handling