마지막줄은 EOF로 끝난다는걸 감안하고 짯는

veritas95 Reply 9 years 34 weeks ago
#include <stdio.h> int main() { int i,p; char c; char line[10000]; for(i=0; (c=getchar())!= '\0'; ++i){ line[i]=c; if(c=='\n'){ for(p=i-1; p>=0; --p){ printf("%c", line[p]); } printf("\n"); i=p; } if(c==EOF){ for(p=i-1; p>=0; --p){ printf("%c", line[p]); } printf("%c", EOF); } } return 0; } 뭐가 잘못된건지 모르겠습니다 ㅜㅜ
booksky Reply 9 years 34 weeks ago
안녕하세요. 조교 이은헌입니다. for 구문 안의 조건이 잘못되었습니다. (c=getchar())!= '\0'로 조건을 선언하였습니다만, 우리는 '\0'을 직접 입력할 수 있는 수단이 없습니다... 저 코드를 수행하면 for 구문은 끝이 없도록 돌아가고, 결국 지정된 10000배열 크기를 넘어가버려서 프로그램이 에러를 일으킬 것입니다. '\0'은 char의 배열인 string의 끝을 알려주는 장치입니다. 지금은 각각의 char를 입력받아서 index를 이용하여 string을 만들고 있지만 나중에 가면 다양한 방식으로 string을 직접 입력받을 수 있습니다. 이 경우 컴퓨터에서 자체적으로 string의 마지막을 '\0'로 채우게 됩니다.