jng6017   1년 전

여러가지의 t를 받는다고 되어있는데

t갯수는 입력을 받지 않는건가요?

아래와 같은 방법을 이용하면 파일이 끝날 때까지 입력을 받을 수 있습니다.

jng6017   1년 전

portableangel

어떤 식으로 돌아가는건가요? 궁금합니다. n에 값이 들어있어서 무한으로 돌지 않나요?

scanf 함수는 전달받은 인자 갯수를 리턴하는 것으로 알고 있는데, 파일의 끝을 만나면 -1을 리턴합니다.

-1은 이진수로 11111..11 이고, 이것에 비트 연산 NOT(~)을 하면 00000..00이 되어 false가 되며 while문을 빠져나가게 됩니다.

만일 scanf 함수가 파일의 끝이 아닌 어떤 값을 입력받는 데에 성공했다면 -1이 아닌 값을 리턴하게 되고,

그게 어떤 값이든 항상 ~ 연산의 결과는 000..00이 될 수 없어서 계속하여 루프를 돌게 됩니다.

jng6017   1년 전

portableangel

그러면 보통 화면입출력 상에서는 계속 입력 받는다는건가요?

온라인 저지가 화면입출력으로 알고 있는데 언제 끝인지를 판단을 못 할꺼 같습니다.

아마 괜찮을거예요. 저 방법대로 작성해서 저 문제 맞았으니까요 ㅋㅋㅋ

콘솔 입력에서도 EOF를 입력으로 주는 방법이 존재하기 때문일 수도 있고,

아니면 내부적으로 파일 입출력으로 변환된다던지 뭐 그런 이유가 있는 듯하지만 자세히는 모르겠네요

만일 테스트를 해보시고 싶다면 백준 저지 코딩에 가셔서 ~scanf 구문으로 코드를 작성하신 뒤

테스트 입력을 넣어보시면 동작을 확인하실 수가 있습니다.

jng6017   1년 전

감사합니다 ㅎㅎ

baekjoon   1년 전

여러가지 방법이 있습니다.

scanf의 리턴값은 입력받은 인자의 개수라는 점을 이용해서 while (scanf("%d %d",&n,&m) == 2) 를 이용할 수도 있고

while(cin >> n >> m) 을 이용할 수도 있습니다.

jng6017   1년 전

감사합니다. scanf가 단순히 입력받는 용도인줄 알앗는데 아니었군요

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