inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

7.7 논리 연산자 Logical operators

글자 세기에서 엔터값 빼는 예제 질문있습니다.

231

이승환

작성한 질문수 11

1

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include<ctype.h>

#include<stdbool.h>

#include<iso646.h>

#define PERIOD '.'

int main()

{

char ch;

int count = 0;

while ((ch = getchar() != PERIOD))

{

if (ch == '\n')

count--;

else

count++;

}

printf("%d", count);

return 0;

}

선생님처럼 \n가 아닐때만 세라는 프로그램이아닌 \n이면 -1하고 아니면 +1하라라는 프로그램을 만들었는데 빌드값이 엔터를 포함해서 나오더라고요.. 어떤 부분에서 실수했는지 궁금합니다..

c

답변 2

1

안소

안녕하세요.

우선 질문자님 코드로만 놓고 봤을 때 문제점은

while ((ch = getchar() != PERIOD)) 이 부분입니다.

ch = getchar() 가 먼저 실행되야 하는데, = 의 낮은 연산순위로 인하여 getchar() != PERIOD 가 먼저 실행됩니다. 따라서 이 조건식의 결과가 ch 에 들어가게 되므로 ch에는 1 아니면 0 만 들어가게 됩니다. 그래서 잘못된 결과가 나오셨을거에요. 

ch = getchar() 부분을 소괄호로 묶어주어 먼저 실행되게 해야합니다.

while( (ch = getchar() ) != PERIOD)

-

우선 코드의 문제점을 답변 드려봤는데 빌드값이 엔터를 포함한다는게 어떤 말씀인지 조금 이해가 가지 않습니다. 위 답변으로 문제가 해결되지 않으셨다면 우선 디버깅으로 문제점을 찾아보시는게 좋을 것 같아요! 그래도 해결되지 않으신다면 입력을 어떤걸로 하셨을 때 어떤 결과를 기대하였는데 어떻게 나오셨다는 좀 더 구체적인 예시를 답댓으로 달아주시면 감사하겠습니다!

0

hhs633

while ((ch = getchar()) != PERIOD)  이거랑

while (ch = getchar() != PERIOD)  이거랑

joy님이 말씀하신대로 .연산자 우선순위땜에 에러나네요..

continue로 했는데 왜 안되나보니깐.. 저거땜요...

감사합니다.. 한수배웁니다 ~

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

1

48

3

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

1

54

2

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

1

53

2

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

1

46

1

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

1

72

2

12.12 헤더 관련 질문

1

59

2

Visual Studio Community 2026 사용 문의

1

135

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