1
#define MAGIC_NUMBER //place your favourite integer here 
#include <stdlib.h>
#include <stdio.h>

int main()
{
    int input,i;
    for(int i=0;i<100;i++)
    {
        scanf("%d",&input);
        if(input== MAGIC_NUMBER)
            printf("%d ",input);                
        else
            printf("Invalid value\n");
    }
    system("pause");
    return 0;
}

当输入非整数值时,该程序崩溃。我想scanf在角色被扫描后恢复正常工作。

4

1 回答 1

2

scanf 手册页

这些函数返回分配的输入项的数量。

因此,您可以检查返回值并读取错误值以在出现错误时丢弃:

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

int main()
{
    int input,i;

    for(i=0;i<100;i++)
    {   
      if (scanf("%d",&input) == 1) { // check if success

        if(input== MAGIC_NUMBER)
        {
          printf("%d ",input);    
        }
        else
          printf("Invalid value\n");
      } else {  // discard input
        int c;
        while ((c = getchar()) != '\n' && c != EOF);
      }   

    }   

    return 0;
}
于 2012-12-11T01:26:35.150 回答