source code
#include <stdio.h> /* copy input to output; 2nd version */ int main() { int c; while( (c = getchar() ) != EOF ) { putchar(c); } return 0; }
첫번째 version 보다 더 간결한 code 입니다.
첫 번째 version은 loop 전에 미리 한번의 입력을 받고 loop 안에서 입력을 반복적으로 받는데요.
이것을 바꿔서 저렇게 표현합니다.
code 중복이 사라진거죠?^^
즉 C언어로도 강력한 중복 제거를 할 수 있는 거네요 ..ㅎㅎ 새롭게 또 하나 알았습니다.
while문에서는 문자를 c에 할당된 문자를 얻습니다. 그리고 그것이 end of file을 의미 하는지 검사를 합니다.
그것이 만약 아니라면 while의 body 부분을 실행합니다. - > 출력을 하겠지요??
while문은 반복에 반복을 거듭합니다.
EOF를 입력을 받으면 종료를 하게 됩니다.
결과적으로 프로그램이 줄었다는 말이 있는데 코드가 짧아 졌다 이런 의미로 해석 했습니다.
그리고 while문 condition에서 괄호가 필요한 이유는 != 이 연산자가 = 이 연산자 보다 우위에 있기 때문입니다.
즉 ,
c = getchar() != EOF 이란 것은
c = (getchar() != EOF )와 같은 것으로 해석합니다.
반응형
'프로그래밍 > C언어' 카테고리의 다른 글
1.5.2 Count Chracters (0) | 2011.11.23 |
---|---|
Exercise 1-6 , 1-7 (0) | 2011.11.07 |
1.5.1 File Copying (0) | 2011.11.07 |
1.5 Character Input and Output (0) | 2011.11.07 |
1.4 Symbolic Constants (0) | 2011.11.07 |