kimdh2577   2년 전

i번째와 i+1번째 문자열을 비교해서 ?가 들어가야할 자리들을 찾아 check배열에 저장한후 출력했습니다. 

채점 시작하자마자 틀렸다고 뜨는데 왜 그럴까요?

djm03178   2년 전

str[i]의 크기가 51이므로 fgets 함수는 개행 문자를 포함해서 최대 50문자까지만 한 줄에 입력받을 수 있습니다. 따라서 50개의 문자 + 개행 문자가 한 줄에 입력된다면 마지막 개행 문자는 잘리고 버퍼에 그대로 남게 됩니다.

예를 들어서 sizeof(str[i])가 4이었다고 가정하고 abc[엔터]를 입력했다고 하면, str[i]에는 abc가 들어가고 개행 문자는 버퍼에 남겨집니다. 여기서 str[i](strlen(str[i] - 1) = '\0'을 하면 str[i]는 ab가 되어버립니다. str[i + 1]은 시작하자마자 버퍼에 남겨진 개행 문자를 읽고 그 위치를 다시 '\0'으로 덮어쓰니 완전히 빈 문자열이 됩니다.

kimdh2577   2년 전

개행문자가 저장되는걸 생각 못했네요.... 

감사합니다.

댓글을 작성하려면 로그인해야 합니다.