강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

차희원님의 프로필 이미지
차희원

작성한 질문수

왜 space bar를 입력해서 공백을 넣으면 b에 값이 안들어가나요?

작성

·

58

·

수정됨

0

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

char c0perator = 0;

int a = 0, b = 0, nResult = 0;

scanf_s("%d%c%d", &a, &c0perator, 1, &b);

switch (c0perator)

{

case '+':

nResult = a + b;

break;

case '-':

nResult = a - b;

break;

}

 

printf("%d\n", nResult);

return 0;

}

 

scanf_s("%d%d", &a, &b); 숫자는 space bar 하고 입력해도 a b에 저장이 되는데

 

왜 저기서는 space bar를 입력해서 공백을 만들면 nResult 값에 0이 나오죠?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
차희원님, 질문 주셔서 감사합니다.

scanf_s를 사용할 때, %d%c%d 형식 지정자를 사용하시면 space bar와 같은 공백이 c0perator 변수에 들어가기 때문에 문제가 발생합니다.
즉, 중간에 공백이 있을 경우 c0perator는 space bar 문자를 가져오고, 다음 정수는 b에 읽히지 않으므로 b의 값은 초기화되지 않은 그대로 남아 nResult가 0으로 계산될 수 있습니다.

해결책으로는 %d %c %d처럼 각 형식 지정자 사이에 공백을 넣어 scanf_s 함수에 전달하는 형식을 수정하는 것입니다. 이는 공백을 허용하여 올바른 입력을 할 수 있게 합니다.

다음과 같이 수정해 보세요:

scanf_s("%d %c %d", &a, &c0perator, 1, &b);

이렇게 하면 c0perator에 공백이 들어가는 것을 방지할 수 있습니다.
추가로 scanf_s의 정확한 사용에 대해 확인하시려면 Microsoft의 문서도 참고해 주세요.

도움이 되셨기를 바랍니다! 추가 질문이 있으시면 언제든지 말씀해 주세요.

차희원님의 프로필 이미지
차희원

작성한 질문수

질문하기