fgets를 사용했는데 왜 입력이 아예 안뜨는걸까요?

khm1136 Reply 9 years 1 week ago
int c; char s[500]; scanf("%c", &c); fgets(s, sizeof(s), stdin); 이런식으로 시작을 했는데 fgets의 입력이 없이 끝나버리는데 왜 그런건가요??
booksky Reply 9 years 1 week ago
sample input을 예로 들어 설명드리겠습니다. u KOREA university in seoul 이렇게 입력할 경우 u는 scanf를 통하여 c에 입력이 됩니다. 문제는 u를 입력하기 위해 우리가 엔터를 입력하게 되는데, 그 때 \n이 발생하게 됩니다. fgets는 \n이 입력될 때까지를 string으로 인식하기 때문에 이 경우 바로 \n이 들어오기 때문에 s에는 아무것도 들어있지 않은 문자열이 들어오게 되는 것이지요. 이 문제를 해결하려면 scanf("%c", &c); scanf("%c", &dump); fgets(s, sizeof(s),stdin); 이런 식으로 c를 입력받은 후 덤프값에 \n을 버리면 s에 정상적으로 값을 입력할 수 있을 것입니다.
khm1136 Reply 9 years 1 week ago
감사합니다!!