오답... 도와주세요...

sizrit Reply 7 years 37 weeks ago
#include<stdio.h> int main (void) { int c,d; c=0; d=0; while(c!=EOF) { c=getchar(); if(c==' ') { putchar(c); do { d=getchar(); if(d!=' ') { putchar(d); } } while(d==' '); } else { putchar(c); } } return 0; } 비쥬얼 c++ 2010 Express 에서 실행하면 되는거 같은데 자꾸만 틀렸다고 나오네요... 도와주세요
onacloud Reply 7 years 37 weeks ago
c=getchar(); 를 통해 EOF가 들어 올 수 잇습니다.. 그러면.. 어떤 일이 발생하죠
sizrit Reply 7 years 37 weeks ago
오랜시간 고민 후 Accepted 되었으나 질문이 있습니다.... 1. EOF가 컨트롤z를 의미하는것이 맞나요...? 2. 문장중간에 while(c!=EOF) { c=getchar(); 대신 while((c=getchar())!=EOF) 를 사용해도 문장에 컨트롤z 를 입력하면 똑같이 종료되지 않고 이상한 기호가 나옵니다 정상인건가요? 3. while(c!=EOF) { c=getchar(); 랑 while((c=getchar())!=EOF) 두 코드를 사용할때의 차이점을 알려주실 수 있을까요...? 4. 그리고 답변해주신 "c=getchar(); 를 통해 EOF가 들어 올 수 잇습니다.. 그러면.. 어떤 일이 발생하죠" 문장에 컨트롤z 가 왔을때 이상한 기호가 나오는것을 말씀하신 건가요?
withcs1 Reply 7 years 37 weeks ago
음..우선 2번질문은.. 이전 문자열들과 한꺼번에 EOF를 버퍼에 올리면 윈도우에선 ^Z를 EOF로 인식하지 못한다고 하네요..즉 이전문자열들과 함께 '문자'로 인식한다고 합니다. 아마 이상한 기호가 출력되면서 종료되지 않는 이유이겠죠?? EOF는 EOF하나만 입력해주어야 한다고 합니다. http://stackoverflow.com/questions/5655112/why-do-i-require-multiple-eof-ctrlz-characters 읽어보세요 그리고 3번 첫번째 : 조건 판별-> 성립시 getchar호출 두번째 : getchar 호출-> 조건판별 판별되는 c값이 달라지겠죠...?