다음 프로그램이 있습니다.
int main(int argc, char *argv[])
{
int a, b;
char c1, c2;
printf("Enter something: ");
scanf("%d",&a); // line 1
printf("Enter other something: ");
scanf("%d", &b); // line 2
printf("Enter a char: ");
scanf("%c",&c1); // line 3
printf("Enter another char: ");
scanf("%c", &c2); // line 4
printf("Done"); // line 5
system("PAUSE");
return 0;
}
내가 C 책을 읽었을 때 저자는 scanf()
버퍼에 줄 바꿈 문자 를 남겼으므로 프로그램은 사용자가 데이터를 입력하기 위해 줄 4에서 멈추지 않고 새 줄 문자를 c2에 저장하고 다음으로 이동합니다. 5 행.
맞습니까?
그러나 이것은 char
데이터 유형 에서만 발생 합니까? int
1, 2, 3 행에서 와 같이 데이터 유형에 대해이 문제를 보지 않았기 때문입니다. 맞습니까?
fflush(stdin)
호출하기 전에 사용할 수있는 경우가 있습니다scanf()
. 장단점 및 해당 방법에 대한 대안에 대한 논의를 보려면 사용fflush(stdin)
을 읽어보십시오 (Windows에서 어느 정도 작동하고 대부분의 다른 곳에서는 작동하지 않음).