#include<stdio.h>
#include<string.h>
void main()
{
char s[1000]={0,},l[1000]={0,};
int i=0,j=0, cs=0, cl=0, max=0;
while(1)
{
s[i]=getchar();
if(s[i]=='\n')
{
cs=i+1;
if(cs>max)
max=cs;
if(cs>cl)
{
cl=cs;
strcpy(l,s);
}
for(i=0; i<cs; i++)
s[i]=0;
cs=0;
i=-1;
}
else if(s[i]==EOF)
break;
i++;
}
printf("%d\n", max-1);
for(j=0;j<max;j++)
printf("%c", l[j]);
}
돌려봤을때 되는데 왜 wa인지 모르겠어요
그리고 다른 답변봤는데 문장끝이 EOF로 끝나야 된다고 하던데
콘솔창에선 엔터 친 다음 ctrl+z눌러야 되지 않ㄴ나요?
근데 어떻게 sample input 의 마지막 문장이
~~~~.EOF가 되는지 모르겠습니다.
콘솔창에서 문장끝에 바로 EOF넣으면 -1이 아니라 26으로 인식되어 집니다.
EOF가 뭐에 약자인지 아십니까? End Of File 입니다. File의 끝이죠.
그걸 억지로 콘솔에서 입력가능하게 만들려다보니 (콘솔측에서) 몇가지 제약을 받아서 그렇습니다....
입력 데이터를 File로 만들어서 그걸 읽어보세요. EOF"는" 제대로 읽힐겁니다..
좀 사회적 얘기를 해보자면.. UNIX 업계 쪽에선 EOF 직전의 문자가 줄바꿈이 아닌 경우 제대로된 파일로 취급하지 않습니다만.. 알고리즘 업계(?) 쪽에선 반대로 문장의 마지막에 줄바꿈 대신 EOF로 끝나야지 제대로된 파일로 취급하고 있기 때문에 EOF 관련해서 문제가 발생한겁니다.
뭐뭐.... 위에 글은 여담이고..제출하신 코드가 틀린 이유는 -1까지 출력했기 때문입니다. "EOF는 문자가 아닙니다!" EOF는 파일에 더이상 읽을 것이 없다는 것을 OS 딴에서 알려주는 에러메세지 같은 것이지, 문자가 아닙니다.