如何解析c中的操作?

时间:2015-09-01 14:16:58

标签: c

我决定通过简单的小程序来刷新我的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;
}

2 个答案:

答案 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