16번 왜 틀렸을까요

Kimtaewon Reply 9 years 34 weeks ago
구코드가 왜 틀렸는지 모르겠습니다. #include<stdio.h> int main() { char a[10000]; char b[10000]; int i=1; int max=0; while(a[i] != EOF) { i++; while((a[i]=getchar())!='\n') { if(a[i] == EOF) break; i++; } if(a[i]=='\n') { if(max<i-1) { max=i-1; for(i=1; i<=max; i++) b[i]=a[i]; } i=0; } } printf("%d\n" ,max); for(i=1; i<=max; i++) { printf("%c" ,b[i]); } return 0; }
cjmp1 Reply 9 years 34 weeks ago
첫번째문장 입력시 i=2부터 문자가들어갑니다
booksky Reply 9 years 34 weeks ago
안녕하세요. 조교 이은헌입니다. 윗 분이 말씀하신대로 i=2로 시작해서 첫 문장을 잘못 해석하는 부분도 잘못되었지만, 다른 문제도 존재합니다. 입력값의 마지막 줄은 \n이 아니라 EOF로 끝나게 됩니다. 그러나 제출하신 코드를 살펴보면 \n을 받을 때에만 max값을 계산하는 작업을 수행하게 됩니다. 즉 마지막줄이 가장 긴 라인인 경우에는 제대로 된 값을 출력할 수 없겠죠?