연습 1.9 너무 심한 공백 에서 if절이 이해가 안됩니다.

bm142857 Reply 9 years 31 weeks ago
#include <stdio.h> main() { int input; input = getchar(); while(input != EOF) { if(input == ' ') { putchar(input); input = getchar(); while(input == ' ') { input = getchar(); } input = getchar(); } else { putchar(input); input = getchar(); } } } if절만 제가 해석해 볼게요, 만약에 input변수가 공백이라면 다음이 실행된다 { input을 화면에 출력한다 //이때 출력되는건 공백이겠죠? input이 공백일때 다음의 반복문이 실행된다 // ? if절이 실행됬다면 input은 항상 공백 아닌가요? { input은 입력값을 받는다} input을 화면에 출력한다 input은 입력값을 다시 받는다
onacloud Reply 9 years 31 weeks ago
putchar(input); input = getchar(); <- 이부분에서 input 문자를 새로 받습니다. while(input == ' ') while문이 시작하기 전에 input을 새로 받습니다. 그러나 위코드를 실행할 경우 하나의 if분안에서 getchar()를 두번하기 때문에 예기치 못한 결과가 발생할 수 있습니다. putchar(input); input = getchar(); <- 1번 while(input == ' ') { input = getchar(); } input = getchar(); <- 2번