#include <stdio.h>
main()
{
int nl;
nl = 0;
while(getchar()!=EOF)
{
if(getchar()=='\n')
++nl;
}
printf("%1d", nl);
}
#include <stdio.h>
main()
{
int nl;
nl = 0;
int c;
while((c=getchar())!=EOF)
{
if(c=='\n')
++nl;
}
printf("%1d", nl);
}
둘은 같은건가요?
둘은 다르게 작동할 것입니다.
getchar()라는 함수는 책에도 나와있듯 사용자로부터 입력을 받는 함수입니다.
예를 들어 "TEST"라는 입력이 위의 코드와 아래 코드에 동시에 들어온다고 가정을 해보겠습니다.
위의 코드는
while(getchar()!=EOF)에서 처음에 T를 받게 됩니다.
그러다가 내려가서
if(getchar()=='\n')에서는 T가 아닌 새로운 입력을 받게 되므로 E를 입력받고 '\n'과 비교하게 됩니다.
하지만 아래코드는
while((c=getchar())!=EOF)에서 처음으로 T를 입력받고 이 값을 c라는 변수에 집어넣습니다.
그 후 if(c=='\n')에서는 새로운 입력을 받는 것이 아니라 c라는 변수와 '\n'을 비교하게 됩니다. 즉 T와 '\n'을 비교하게 되는 것이지요.