입력 버퍼에 문자가있는 한 scanf가 반환됩니다. Enter 키를 누르기 전에 버퍼가 플러시되지 않습니다.
버퍼가 비어 있거나 break 문을 누를 때까지 루프가 실행됩니다.
에 코드를 변경 :
int main (int argc, char * argv[])
{
char c[BUFSIZ];
while(1){
scanf("%c",c);
fprintf(stderr,"Input was: '%c'\n",c[0]);
if(c[0] == 'c')
printf("working\n");
else
{
printf("Not working\n");
break; // This will exit the while loop if the character is not 'c'
}
printf("not-not-working\n"); // This will always print on every iteration
}
return 0;
}
출력을 제공합니다, + [ENTER] 'C'를 입력 할 때 :
c
Input was: 'c'
working
not-not-working
Input was: '
'
Not working
당신은 대신 scanf와의 sscanf를 사용하여이 예를 해결할 수 있고, 첫 번째 문자 인 c [0]을 확인하면됩니다.
'not-not-working'은'if'에서 벗어나기 때문에 항상 표시됩니다. 첫 번째'if' 다음에';'를 넣으십시오. PS :'return 0'도 잘 작동 할 것입니다. – Tico
코드에서 무슨 일이 벌어지고 있는지 더 잘 알 수 있도록'scanf '의 반환 값뿐만 아니라'c'도 출력 할 수 있습니다. – danfuzz
예, 이미 초기화되었음을 나타냅니다. – Michael