inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어

5.7 나머지 연산자

질문드립니다.

255

junghoyoung8

작성한 질문수 9

1

복습하는 과정에서 scanf()에 \n를 사용하면 다음단계로 넘어가지 않는다고 메모를 해두었는데 검색을 해봤지만 잘 이해가 안되서 그런데 자세한 설명을 부탁드릴수 있을까요?

c

답변 2

2

안소

scanf 에서 %c 로 문자를 받는 입력이 아니라면, scanf 에서의 공백 문자 혹은 \n 같은 것들은 공백이 아닌 문자가 나타날때까지 공백 문자들을 모두 무시하겠다는 뜻이 됩니다. 그리고 공백이 아닌 문자의 입력이 들어올 때까지 기다리고 공백이 아닌 문자를 받아야 종료가 되는듯합니다.

그래서 위에 답변 주신 분의 예제 코드로 설명을 드려보자면 만약 scanf("%d\n", num) 으로 5 를 입력 하시면 입력이 끝나기는커녕 한번 더 입력을 받게 됩니다. 그 이유는 5 를 입력하시고 엔터를 딱 치시면 입력 버퍼에서는 5 와 \n 이 들어가는데 \n 은 공백문자이므로 무시됩니다. 그리고 공백이 아닌 문자의 입력을 기대하는데 입력 버퍼가 비워져서 받을게 없으므로 입력을 사용자로부터 한번 더 받게 되는 것입니다. 

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

0

junghoyoung8

항상 감사합니다.

0

junghoyoung8

혹시 버퍼에 대한 자세한 내용은 뒷 강의에서 나오나요? 아니면 따로 공부를 해야하나요? 해설답변에서 버퍼라는 단어를 많이봐서 질문드립니다.

1

haon

#include <stdio.h>

int main() {

int num;

scanf("%d\n", &num);

printf("%d", num);

return 0;

}

저도 잘모르겠는데 이런코드를 실행해보니까 두번 입력을 받았습니다. 

첫번째입력이 5인경우: num을 입력받으면 num에 5가 들어갔기때문에 당연히num은 5가됩니다.

두번째입력이 3인경우: \n를 입력받았더니 scanf("%d\n", num, 저장할곳); 저장할곳이없습니다.

이런느낌이니까 결론은"num = 5"라고 생각하면될것같아요. 

더 알고싶으면 실행해보고 생각하면 좋을것같아요!

0

junghoyoung8

감사합니다.

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

47

3

main 함수에서 왜 int만 선언이 되는걸까요

1

52

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

53

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

46

1

프로토타입과 함수간의 인자 불일치

1

72

2

12.12 헤더 관련 질문

1

59

2

Visual Studio Community 2026 사용 문의

1

134

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

59

2

getchar(), putchar()

1

92

3

강의자리ㅛ

1

78

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

112

2

소스파일안에 여러 파일

1

74

2

F5와 F7의 차이

1

75

2

c = TWO * (a+b); 에서 a와 b는?

1

58

2

; 세미콜론을 붙이는 기준에 문의

1

68

1

Step over 기능 문의

1

52

2

2.6 강의 따옴표 출력 규칙 문의

1

74

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

60

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

64

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

53

2

11.5 코드 구현

1

67

2