整数误差C.

时间:2015-03-16 20:16:16

标签: c error-handling int

这就是我现在所拥有的:

int main() {
int number;
printf("Type your number: ");
scanf("%i",&number);

char code[4];
printf("Type your code: ");
scanf("%s",&code);

当我在第一个中输入任何数字而不是数字时,脚本会变得疯狂,它只显示

  

输入您的号码:NOTaNUMBER

     

输入您的代码:THErestOFtheSCRIPT

- 返回命令行

我想要它做的是

  

输入您的号码:NOTaNUMBER

     

您没有输入数字

- 返回命令行

我该怎么做?


这与上述副本不同。我在这里谈的是C,而不是C ++。 C不知道cin,即所述副本的答案。但是,在下面找到了答案

1 个答案:

答案 0 :(得分:1)

使用输入字符串

  scanf("%s",code);

或更好

  scanf("%3s",code);

检查scanf返回的数字使用值的正确输入:

   char ch;
   if( 1 == scanf("%i",&number) )
   {
        // use correct number
   }
   else
   {
        // clean input bufer
       while( (ch = getchar()) != '\n' && ch != EOF);
   }