프로그래밍/C언어

1.5.1 File Copying 2nd version

seungdols 2011. 11. 7. 18:14

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