4

我真的不知道这是什么错误。这似乎是对的,不是吗?

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
   char op;

   printf("Type in operator (+,-,/,*):");
   scanf("%i",&op);

   if(op == '+')
   {
      printf("You entered a plus");
   }

   system("pause"); 
   return 0;
}

我希望它在输入 + 时打印“你输入了一个加号”。它不是。

我对 C 有点陌生。在此先感谢 :)

4

3 回答 3

4

if条件很好。问题是scanf()格式,应该是

scanf("%c",&op);

%i读取一个整数,而%c读取一个char。)

于 2013-04-06T15:14:14.453 回答
0
scanf("%i", &op);

你期待一个整数。所以,当你写一个字符并按下<Enter>时,scanf失败(你可以检查它的返回值来查看它):

if (scanf("%i", &op) != 1)
{
    /* Treat the error. */
}

使用相当%c格式scanf来读取字符:

scanf("%c", &op);
于 2013-04-06T15:14:34.553 回答
0

您的问题是格式说明符错误

//In scanf instead of 
scanf("%i",&op);
// you have to provide 
scanf("%c",&op);

%i use for reading integer whereas %c use for reading char.
于 2013-04-06T17:57:35.100 回答