scanf함수 질문입니다
, Yun Junhyeok님이 작성36.13 심사문제 반복문으로 입력을 받는 구문을 작성중이었는데
scanf("%d ", &numArr[i]);를 하니까 입력을 6개 받고 마지막 입력은 무시하고
scanf("%d", &numArr[i]);를 하니까 정상적으로 입력을 5개 받고 끝납니다.
혹시 왜 그런걸까요?? scanf 함수의 구동방식에서 나오는 현상일까요?
Re: scanf함수 질문입니다
, 도장_ 관리자님이 작성 scanf("%d %d %d %d %d",
&numArr[0], &numArr[1], &numArr[2], &numArr[3],
&numArr[4]);
심사문제는 이와 같이 입력 부분의 코드가 제시되어 있습니다.
반복문으로 값을 입력받지 않습니다.
입력값을 어떻게 했는가의 문제입니다.
1 2 3 4 5
이 경우 5 뒤에는 공백이 없습니다. scanf는 패턴 일치로 입력을 판단하는데 "%d "로 공백이 있으면 "1 "을 패턴 일치로 생각해서 1을 입력 받게 됩니다. 반복문이면 뒤도 마찬가지입니다. 그러나 마지막 5는 뒤에 공백이 없어서 패턴이 일치하지 않으니까 입력이 되지 않고, 커서가 멈춘 상태로 입력을 대기하게 됩니다.
입력이
1
2
3
4
5
이와 같은 경우에 반복문 안에서 "%d"로 입력 받게 되면 엔터키와 함께 입력이 끝나면서 순차적으로 숫자를 입력 받게 됩니다.
입력 형태에 따라 다르지만, 본 심사문제는 입력을 제시하고 있습니다.
"%d %d %d %d %d"면 충분합니다. 굳이 복잡하게 코드를 작성할 이유가 없습니다.