inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

6.15 중첩된 루프들

6-15강 첫번째 예제 질문

262

라라올라

작성한 질문수 4

2

사용자로부터 첫번째 문자와 마지막 문자, 그리고 몇번 반복할건지를 직접 입력받는 경우를 가정하여 다음과 같이 코딩해봤습니다.

문자를 입력받고, 정수로 형변환한 후, 정수를 한개씩 늘려가다가 사용자가 지정한 마지막 문자를 만나면 멈추고 다시 문자로 출력되도록 하면 되겠다 싶어 작성한 코드입니다.

첫번째 scanf까지는 정상적으로 작동하는데 두번째 scanf값을 입력하면 실행창이 꺼져버립니다. 어느 부분에서 오류가 발생한건지 알 수 있을까요?

c

답변 2

2

Soobak

안녕하세요, 질문&답변 도우미 Soobak 입니다.

 

scanf() 를 사용하실 때 '%c' 형식 지정자를 사용하는 경우에 대해서는 버퍼에 남아있을 수 있는 공백 문자(space, 개행, 탭 등)를 주의해야 합니다.

만약, scanf("%c", &변수); 와 같은 사용에서, 첫 번째 문자를 입력받고 나서 엔터를 치게 되면, 개행 문자가 버퍼에 남아있게 되고, 해당 개행 문자가 두 번째 scanf() 에서 %c 형식 지정자에 의해 바로 입력으로 처리되어버립니다.

이러한 문제를 해결하기 위해서, scanf() 로 문자를 입력 받은 후 getchar() 과 같은 함수를 사용하여 버퍼에 남아있을 수 있는 개행 문자를 처리해주고는 합니다.

관련된 내용은 강의 7.2 표준 입출력 함수들 getchar(), putchar() 예제 에서 보다 자세하게 학습하시게 되시며, 다른 강의들의 예시 코드에서도 자주 반복학습 하시게 됩니다.

주어진 연습 문제 뿐만 아니라, 스스로 의지를 가지고 무엇인가 더 구현하려고 해보신 점이 인상 깊네요.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. woojunghyck님.

질문 주신 내용은 scanf를 이용한 문자 입력에서 발생하는 문제로 보입니다. 사용자로부터 문자를 입력받을 때 scanf 함수를 연속해서 사용하면, 첫 번째 문자 입력 후 엔터를 치면서 입력 버퍼에 남게 되는 개행 문자 ‘\n’을 두 번째 scanf가 읽어들이는 문제일 가능성이 높습니다.

이러한 문제는 scanf를 사용할 때 입력 버퍼에 남은 개행 문자를 명시적으로 소비해주지 않으면 다음 입력에 영향을 줄 수 있습니다. 이와 관련한 해당 강의의 다른 수강생 질문답변을 참고하시는 것이 도움이 될 것 같습니다.

다음은 입력 버퍼와 관련된 질문의 답변 중 일부입니다:

  • 6:00 연습문제 3번 질문있습니다. - 이 질문에서는 %cscanf로 입력받을 때 발생하는 문제와 또다른 질문에 대한 답변이 포함되어 있습니다. 해당 답변에서는 %c 전에 공백을 두어 입력 버퍼의 개행 문자를 무시하는 방법이 제시되었습니다.

scanf("%c", &변수); 호출에 앞서 공백 " " 을 넣는 것으로 개행 문자가 입력을 방해하지 않도록 할 수 있습니다. 그러니 위 코드에서 두 번째 scanf 호출을 scanf(" %c", &last);로 수정해 보세요.

원하는 답변이 있으셨다면 도움이 되셨기를 바라며, 구체적인 코드 수정이 필요하거나 추가적인 설명이 필요한 경우에는 해당 강의의 Q&A 섹션을 이용하시는 것을 권합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Export template 안됨

1

19

2

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

1

54

3

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

1

56

2

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

1

54

2

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

1

49

1

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

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

137

2

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

1

61

2

getchar(), putchar()

1

93

3

강의자리ㅛ

1

80

2

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

1

113

2

소스파일안에 여러 파일

1

76

2

F5와 F7의 차이

1

76

2

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

1

58

2

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

1

69

1

Step over 기능 문의

1

53

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

65

2

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

1

53

2

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

1

53

2