scanf("%d\n", &input)
694
작성한 질문수 7
수업을 듣다 궁금증이 생겨서 질문드려요~
scanf("%d\n", &input);
4입력시 4\n여서 종료하려면 \n하나가 더 필요 한거 까지는 이해가 됐습니다. 그후에 \n를 계속 눌러도 안넘어가지는게 어떤 것때문인지 궁금합니다.
%d\n 형식을 사용하므로 형식에 안맞는 \n는 안읽고
%d\n의 형식만 읽는건가요?
아니면 %d\n 는 숫자와 (1개 이상의 공백문자)여서 엔터가 계속 입력되고 %d(다른정수)\n입력시 \n를사용하므로 %d만남기고 종료되는건가요?
형식이 달라서 안읽는건지 \n가 1개이상의 공백문자를뜻해서 여러번읽는건지 궁금합니다!
답변 2
1
scanf() 함수는 형식문자에 공백문자(White space)를 입력할 경우 이를 스킵합니다. 즉, 입력된 문자 하나를 빼버리는 것이죠. 결국 입력의 끝을 의미하는 '\n' 입력은 제거되고 아직 입력 스트림이 끝나지 않았다고 판단해 사용자 입력을 대기하는 상황이 벌어집니다. 다음 코드처럼 '\n' 대신 공백이나 '\t'를 넣어도 결과는 같습니다.
scanf_s("%d ", &a);
scanf_s("%d\t", &a);
아무튼 입력의 끝을 의미하는 \n이 매번 제거되는 탓에 끝나지 못하고 계속 입력을 받는 순환구조가 만들어 집니다. 참고하시기 바랍니다. :)
0
scanf()에서 "%d\n" 의 의미는
“모든 공백(스페이스, 탭, 개행)을 계속 건너뛰고,
그 다음 ‘공백이 아닌 입력’이 나올 때까지 기다려라”
입니다.
그러니까 엔터를 치면 또 공백이 입력되니까 계속 대기상태가 되는 겁니다. 이 부분은 강사님 설명이 많이 부족했다고 생각합니다.
scanf("%d\n") 의미
0
19
1
주소 연산자(&) 간접 지정자(*) 반대 개념
0
32
1
Virtual Memory, Memory, Memory mapping tables
0
50
1
샘플코드 출력 오류 발생 질문드립니다
0
62
2
값의 교환에 사용되는 변수의 위치.
0
87
2
메모리 비교에 관한 질문
0
80
2
문자열 Null
0
62
1
C, C++
0
87
2
문자열 입출력 코드 에러
0
60
2
선생님! 120화 2분 50초 질문입니다.
0
66
1
caller 가 메모리 할당 해제를 할 때의 문제점 질문
0
63
2
단축키 맞는지 여부 문의드립니다.
0
59
2
문자열을 사용하는 이중 포인터에 대하여 질문합니다
0
65
1
char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요
0
78
2
용어 설명 필요
0
56
2
stdin, stdout
0
70
2
필수 실습 (최댓값을 반환하는 함수)
0
92
2
아......ㅠㅠ
0
99
2
버퍼 내 엔터
0
71
1
2진수 뺄셈에서 carry-out
0
111
2
union 식별자는 실무에서 보통 어디에서 사용하나요?
0
79
2
필수실습문제 공부법 (진도 vs 복습)
0
103
2
예제파일 다운로드
0
78
2
Visial Studio Code 를 설치해서 사용해도 수업을 따라가는데 지장이 있나요?
0
118
3





