작성
·
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의 문서도 참고해 주세요.
도움이 되셨기를 바랍니다! 추가 질문이 있으시면 언제든지 말씀해 주세요.