2012-12-11 7 views
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을 정상 작동 상태로 되 돌리고 싶습니다. scanf man-page에서표준 오류 상태를 처리하는 방법은 무엇입니까?

답변

2

:

These functions return the number of input items assigned.

그래서 당신은 반환 값을 확인하고 읽기에 나쁜 값을 폐기하는 오류가 발생하면 수

#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; 
} 
관련 문제