2015-01-25 6 views
-2

아래의 프로그램은 getchar()을 사용하여 입력하지 않습니다. 대신 인쇄 후 끝납니다 ("want to continue??(press y for yes and press n to reenter)"). n 또는 N을 입력 한 후에는 입력을받지 않습니다.getchar()에 의한 입력을받지 않거나 while에 오류가있을 수 있습니까?

void main(){ 
    int i,arr[]={55,10,23,11,35,8,9,20},n; 
    char a; 
    printf("Given array is:\n"); 
    for(i=0;i<8;i++) 
     printf("%d ",arr[i]); 
     do{ 
      printf("\nEnter position where you want to insert element:"); 
      scanf("%d",&n); 
      printf("You entered position %d \n",n); 
      printf("want to continue ??(press y for yes and press n to reenter)"); 
      a=getchar(); 
     } while(a=='n' || a=='N'); 
} 
+1

시도'getchar가(); A = getchar가();'나'는 scanf ("% c를", &a);는'때문에, &n);' – BLUEPIXY

+0

@BLUEPIXY, 즉, 내 친구'는 scanf ("% d 개"의 줄 바꿈을받을 , 완벽하게 유효한 답변입니다. 댓글로 게시하는 이유는 무엇입니까? –

+0

'a'는'char'가 아닌'int'이어야합니다. –

답변

0

읽을됩니다 : getchar()

은 표준 입력에서 다음 문자를 돌려줍니다 (표준 입력). 표준 입력인지

주의점 I/O 때문에 getchar가()는 입력 버퍼에서 첫 번째 문자를 판독 버퍼링

scanf("%d",&n);으로하여 입력하는 int 및 개행 다음 getchar가한다 (개) 대신 개행을

사용 scanf("%d\n", &n); 읽기 또는 @BLUEPIXY 상기와 같이 입력 버퍼에 관한 getchar();a = getchar(); 전에

자세한 설명을 추가 Flush the input buffer

-1

당신은 a = getchar();

getchar(); 

하기 전에이 작업을 추가 할 수 있습니다 그래서이 버퍼에서 새 라인 문자를 '먹는다'. 예를 들어 번호를 입력 한 후 scanf("%d",&n);에 3이 여전히 버퍼에 '\n'이며에만이있는 경우 : a = getchar();를, \ n 기준에 따라

+0

downVote 설명해주세요. – Rizier123