최초에 wordCount를 입력받을 때에 scanf()를 사용하였는데, 이 때 처리된 위치가 숫자까지만이고 줄바꿈 문자는 아직 처리된 상태가 아닙니다. 따라서 그 다음에 fgets()를 호출하면 그 시점부터 줄바꿈 문자가 들어올 때까지 입력받으므로 빈 줄을 입력받게 됩니다.
아울러 관리자 권한으로 글의 양식을 수정하였으니 다음번에 질문하실 때에는 수정된 바와 같이 코드를 "~~~ c++" 으로 시작해 "~~~" 으로 끝나도록 해 주시기를 바랍니다.
scanf() 숫자 입력 받은 후 \n(줄바꿈 문자) 처리 되지 않은 상태에서 다시 scanf()로 숫자를 입력 받으면 아무 문제 없이 입력되었습니다.
또한 바로 문자열을 받으면 \n(줄바꿈 문자) 을 받아 그냥 넘어가는 경우도 있었습니다.
위에서 사용한 scanf()로 문자열을 받을때 그냥 넘어가지 않는 현상이 있었습니다.
이때는 \n(줄바꿈 문자)가 처리된 것 같은데 정확한 차이점을 모르겠습니다.
tjkim
DICTIONARY
http://algospot.com/judge/submission/detail/200151
문제를 푸는데 입력을 받을때 scanf로 하니 정답이 뜨고
fgets로 받으니 런타임 오류가 났습니다.
(테스트 케이스 개수 제외)
처음 입력 : 단어 개수 (숫자)
두번째 부터 : 단어 (문자열, 단어 개수 만큼)
맨 뒤에 공백(스페이스)이나 \n 같은 문자가 와서 fgets으로 왔을때는 틀린 것일까요?
왜 scanf일때는 정답으로 나오는지
어떻게 차이가 있는지 문의드립니다.
ps. scanf() 입력시 다음에 문자열 입력 받을때 \n 가 들어오는 문제로 fgetc(stdin); 써서 제거 했습니다.
하지만 scanf로 문자열 입력 받을때도 \n가 없는지 정상 입력되었습니다.
10년 전