resha12   4년 전

while(scanf("%10d", str) = 1) 이 부분에서  이해가 잘 가지 않습니다.

while문에서 scanf함수를 호출하여 입력을 abcdefghijklmnop를 받았다면, scanf함수는 1을 리턴할 것이고,

다음 printf함수는 str에 저장된 10개의 문자인 abcdefghij을 출력해 줄 것입니다. 

그 다음 다시 while로 돌아가기 때문에 다시 scanf함수를 호출해서 입력받아야 하는 것 아닌가요? 

어떻게 해서 다시 입력 받지 않고 처음에 입력받았던 abcdefghijklmnop에서 10개를 뺀 문장인 klmnop가 출력되는지 모르겠습니다.

sys7961   4년 전

"%10s"가 문자열을 입력받을 때 10개만 입력받겠다는 뜻이에요.

그래서 첫번째 루프에서 앞 10개만 하고, 두번째 루프에서 남은 klmnop를 입력받아서 출력하죠. 새번째에는 입력이 더이상 없으니 scanf가 EOF를 리턴해서 whlie이 종료되고요.

댓글을 작성하려면 로그인해야 합니다.