我决定通过简单的小程序来刷新我的C.我试图从文件“myfile.txt”读入,应用操作并打印到stdout。该文件包含一行:
2 + 3
我期望的输出是:
5
但我发现这比我原先预期的要复杂得多。起初我尝试使用getc()但是继续得到段错误,然后我尝试了fscanf()除了打印的print语句之外没有添加到stdin的输出:
2 1556274040
为什么输出2 1556274040?是否有更好的方法尝试从文件中读取操作,例如我可以使用的一些apply()函数? 这是我的代码:
int main()
{
int ans, num1, num2;
char oper;
FILE *pFile;
pFile = fopen("myfile.txt", "r");
if (pFile != NULL) {
fscanf(pFile, "%d", &num1);
fscanf(pFile, "%c", &oper);
fscanf(pFile, "%d", &num2);
printf ("%d %c %d", num1, oper, num2);
if (oper == '+') {
ans = num1 + num2;
printf(ans);
}
fclose(pFile);
}
return 0;
}
答案 0 :(得分:3)
printf(ans);
不是打印int variable
的有效语法。
试试这个 -
printf("%d\n",ans);
正如你问的那样
您可以使用fgets
代替使用fscanf
来阅读文件内容,但请确保检查其返回。
答案 1 :(得分:0)
这是一个可能的解决方案......
#include <stdio.h>
int main() {
int ans, num1, num2;
char oper;
FILE *pFile;
pFile = fopen("myfile.txt", "r"); // might need to specify binary/text
if (pFile != NULL) {
// fscanf(pFile, "%d", &num1); need spaces in format specifier.
// fscanf(pFile, "%c", &oper);
// fscanf(pFile, "%d", &num2);
// one way to solve...
fscanf(pFile, "%d %c %d", &num1, &oper, &num2);
fclose(pFile); // stopping some errors
printf ("%d %c %d = ", num1, oper, num2);
} // end if
else
puts("fopen returned NULL");
if (oper == '+') {
ans = num1 + num2;
printf("%d",ans);
} // end if
return 0;
} // end main