1.9 너무 심한 공백

msy9427 Reply 9 years 4 weeks ago
#include <stdio.h> #include <stdlib.h> int main() { int a,b,c[1000]; while(a !=EOF){ a = getchar(); for ( b = 0; b < 1000; b++) { if ( a == ' ') c[b] = '\0'; else if(a == '\t') c[b] = '\0'; else c[b] = a; } for(b=0; b<1000; b++) { if(c[b]=='\0') if(c[b+1]!='\0') c[b]=' '; } printf("%s", c); } return 0; } 어디서 틀린건지 모르겠어요;;
pichulia Reply 9 years 4 weeks ago
약 3군데 정도의 치명적인 문제가 존재하네요.. 일단 입력으로 한글자짜리 k같은게 들어오면 현재 코드는 무엇을 출력하는지 테스트해보셨습니까? 아마 1000개의 k와 그 이상의 이상한 문자가 출력될것입니다. 원인은 첫번째 반복문인 for(b=0;b<1000;b++) 이 부분을 돌면서 a값이 전혀 변하지 않기 때문입니다. c[0]부터 c[999]까지 똑같은 문자가 들어가고, 그걸 냅다 %s 출력하고있습니다. 이 부분을 고치고나면 나머지 2가지 문제가 해결(되거나 더 카오스하게 진화!!)될거같으니...일단은 "입력으로 들어온 문자를 그대로 출력해보기" 이거부터 성공시켜볼까요?