inflearn logo
강의

Course

Instructor

Hong Jung-mo's C Programming: Learning by Doing

5.7 Remainder Operator

문자를 입력하면 무한 루프가 됩니다

331

younghokoo082319

4 asked

1

문자를 입력하면 무한 루프가 됩니다.

scanf에서 정수형은 문자 앞까지만 입력을 받는데, 실행 후, 우선 첫루프에 10을 입력하면 10secs 0mins 0hurs가 당연 출력되고, 다음 루프에 a를 입력하면 scanf는 문자까지만 입력을 받으므로 그대로 통과하고  seconds변수에 여전히 10이 남아있어 그런지 scanf에서 대기하지 않고 쭉 계속  10secs 0mins 0hurs를 출력하고 무한루프가 됩니다. 

그리고 처음부터 a를 입력하면 초기화 된 seconds에 0이 있어서 인지 0secs 0mins 0hurs을 출력하고 무한루프가 됩니다.

이 현상을 생각해볼떄  seconds변수에 어떤값도 없어야 scanf를 만날때 컴퓨터는 멈추고 입력을 기다리게 되는 것 같기도 합니다. 

scanf의  &변수(&seconds)가 어떤 의미가 있지 않을까하는 상상을 해보았습니다. 상세 설명 부탁드립니다

c

Answer 2

2

sohyun

안녕하세요. 

어떤 코드로 실행하셨을 때 질문 사항이 생기신 것인지 그 코드를 첨부해주시면 답변 드리는데 도움이 됩니다. (강의의 코드에서 생긴 질문이라면 해당 코드가 등장하는 강의의 시간대를 구체적으로 알려주시면 됩니다.)

우선 해당 강의에선 교수님께서 코드를 여러번 수정하시기 때문에 질문자님께서 해당 강의의 어떤 코드에서 그런 결과를 얻으셨는지 제가 알기가 어렵네요 ㅠㅠ 코드를 알려 주셔야 제가 자세한 답변을 드릴 수 있습니다.

작성해주신 질문 글을 읽어보니 왠지 관련되어 있을 것 같은 다른 질문글들이 생각나네요. 이 질문 글들에서 제가 드린 답변글 링크를 첨부해봅니다. 아래 링크들을 읽고도 혹시 해결이 되지 않으셨다면 해당 코드 혹은 강의의 시간대를 알려주시면 감사하겠습니다

https://www.inflearn.com/questions/124060

https://www.inflearn.com/questions/189922

https://www.inflearn.com/questions/133852

0

younghokoo082319

선생님, 잘 이해가 되었습니다. scanf 입력버퍼에 대해 새롭게 이해할 수 있는 기회가 되었습니다. 감사합니다.

Export template 안됨

1

45

2

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

1

70

3

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

1

63

2

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

1

62

2

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

1

58

1

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

1

81

2

12.12 헤더 관련 질문

1

63

2

Visual Studio Community 2026 사용 문의

1

149

2

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

1

65

2

getchar(), putchar()

1

96

3

강의자리ㅛ

1

85

2

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

1

119

2

소스파일안에 여러 파일

1

80

2

F5와 F7의 차이

1

82

2

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

1

63

2

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

1

72

1

Step over 기능 문의

1

57

2

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

1

81

2

int main 함수 관련 오류 문의

1

71

2

13.4 words[0]

0

64

2

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

1

65

2

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

1

67

2

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

1

57

2

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

1

56

2