모호하지 않은 공백에서요!

bm142857 Reply 9 years 30 weeks ago
#include <stdio.h> #include <stdlib.h> int main() { char c = getchar(); while(c != EOF) { if(c=='\t') { printf("\\t"); c=getchar(); } if(c=='\\') { printf("\\\\"); c=getchar(); } else { printf("%c", c); c=getchar(); } } } #include <stdio.h> #include <stdlib.h> int main() { char c = getchar(); while(c != EOF) { if(c=='\t') { printf("\\t"); c=getchar(); } if(c=='\\') { printf("\\\\"); c=getchar(); } if(c!='\t' && c!='\\') { printf("%c", c); c=getchar(); } } } 여기서 위코드는 실행이 안되고 아래 코드는 실행이 됩니다!!! else의 상황과 if(c!='\t' && c!='\\')의 상황이 제생각에는 똑같은것 같은데요 else를 쓰면 \t가 표시되긴 하는데 탭공백이 사라지지 않네요 왜 이런 현상이 발생하는..거죠?
booksky Reply 9 years 30 weeks ago
이유는 간단합니다 if(c=='\t') { printf("\\t"); c=getchar(); } if(c=='\\') { printf("\\\\"); c=getchar(); } else { printf("%c", c); c=getchar(); } 이런 코드면 if와 if-else구문이 따로 구분되어있는겁니다. 위에 if에서 탭을 무시했다고 아래 if-else에서 무시하지는 않겠죠? 작성자의 의도는 if elseif else인듯합니다만...