inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

독하게 시작하는 C 프로그래밍

문자, 정수 입력과 개행문자 제거

섹션 9, 표준 입/출력 관련 질문입니다!

해결된 질문

412

passionfarm

작성한 질문수 1

0

널널한 개발자님! 항상 좋은 강의 감사드립니다ㅎㅎ

다름아니라 섹션 9의 문자, 정수 입력과 개행문자 제거 부분에서 풀리지 않는 부분이 있어 이렇게 질문을 올리게 되었습니다.

강의 중 24:28 쯤, "퍼올려도 N이 남는다"라는 부분이 이해가 잘 가지 않는데요!

제가 이해한 바로는 scanf_s 함수에서 %d\n의 형태로 데이터를 받기 때문에 입력 버퍼 내부에 개행문자도 함께 삭제됐으므로 다음 개행 문자를 입력받을 때까지 사용자 입력을 계속 요청하는 것으로 알고 있었는데, 엔터를 쳐도 개행문자를 인식했음에도 계속해서 개행문자가 남는 이유에 대해서 알고 싶습니다!

다시한번 감사드리고, 추운 날씨 몸 건강도 잘 챙기시기를 바라겠습니다. 화이팅입니다!

c 컴퓨터-구조 assembly-language vc++

답변 2

1

널널한 개발자

%d\n의 문제는 \n이 2회 등장해야 한다는 것입니다. 가령 %d만 입력을 받는다 하더라도 scanf() 함수는 \n이 등장해야 입력이 끝났다고 판단합니다. 즉 '정수3\n'을 하나의 입력으로 상정합니다. 심지어 \n을 제거하지도 않습니다.

그런데 거기에 추가로 \n을 넣어버리면 그 다음은 어느 정도 예상이 되리라 생각합니다. 깊이 생각 할 필요 없습니다. scanf() 함수는 내가 구현한 것이 아니라 가져다 사용하는 표준 입/출력 함수입니다. 사용 방법을 잘 알아야 합니다. 그리고 그 작동현상은 이해의 대상이 아니라 결과를 암기하면 될 일인 것입니다.

참고하시기 바랍니다. :)

0

passionfarm

바쁘신 와중에도 신경써서 답변해주셔서 감사드립니다ㅎㅎ

그 전에 확인한 내용이 있는데 저와 비슷한 궁금점을 가진 분들이 계실 것 같아 추가로 보완했는데 도움이 되셨으면 좋겠습니다.

format에서 끝 부분에 \n으로 들어올 경우 공백 문자로 인식하게되고, 입력 시 공백문자 + 공백 문자가 아닌 문자가 입력되어야 입력이 종료되는 것으로 확인했습니다. 이후 추가로 입력 시, 이전에 입력한 공백 문자가 아닌 문자가 버퍼에 남아있으므로 문제가 될 수 있으므로 주의하시면 좋을 것 같습니다.

다음은 출처입니다.

https://electro-don.tistory.com/entry/scanf-n-%EA%B4%80%EB%A0%A8

scanf("%d\n") 의미

0

2

1

주소 연산자(&) 간접 지정자(*) 반대 개념

0

23

1

Virtual Memory, Memory, Memory mapping tables

0

43

1

샘플코드 출력 오류 발생 질문드립니다

0

59

2

값의 교환에 사용되는 변수의 위치.

0

83

2

메모리 비교에 관한 질문

0

78

2

문자열 Null

0

60

1

C, C++

0

84

2

문자열 입출력 코드 에러

0

58

2

선생님! 120화 2분 50초 질문입니다.

0

65

1

caller 가 메모리 할당 해제를 할 때의 문제점 질문

0

60

2

단축키 맞는지 여부 문의드립니다.

0

58

2

문자열을 사용하는 이중 포인터에 대하여 질문합니다

0

62

1

char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요

0

77

2

용어 설명 필요

0

55

2

stdin, stdout

0

69

2

필수 실습 (최댓값을 반환하는 함수)

0

90

2

아......ㅠㅠ

0

97

2

버퍼 내 엔터

0

70

1

2진수 뺄셈에서 carry-out

0

110

2

union 식별자는 실무에서 보통 어디에서 사용하나요?

0

76

2

필수실습문제 공부법 (진도 vs 복습)

0

100

2

예제파일 다운로드

0

75

2

Visial Studio Code 를 설치해서 사용해도 수업을 따라가는데 지장이 있나요?

0

114

3