scanf_s와 switch-case문 오류
조회수 275회
#include <stdio.h>
int main(void)
{
int num1, num2;
char arithmetic;
printf("숫자 2개와 연산자를 입력하세요.\n\n");
printf("연산자는 아래와 같습니다.\n");
printf("더하기:+, 빼기:-, 곱하기:*, 나누기:/\n");
printf("입력 순서: 정수1 연산자 정수2\n\n");
scanf_s("%d %c %d", &num1, &arithmetic, &num2, sizeof(num1), sizeof(arithmetic), sizeof(num2));
switch(arithmetic)
{
case'+':
printf("%d %c %d = %d\n", num1, arithmetic, num2, num1 +num2);
break;
case'-':
printf("%d %c %d = %d\n", num1, arithmetic, num2, num1 -num2);
break;
case'*':
printf("%d %c %d = %d\n", num1, arithmetic, num2, num1 *num2);
break;
case'/':
printf("%d %c %d = %d\n", num1, arithmetic, num2, (float)num1 /num2);
break;
default:
printf("연산자를 잘못 입력했습니다.\n");
break;
}
return 0;
}
로 짰는데 입력 받고 나서 까지는 되는데 뒤에 switch-case문이 출력이 안되네요... 어디가 문제가 있을까요?
1 답변
-
틀린 곳 1
scanf_s("%d %c %d", &num1, &arithmetic, &num2, sizeof(num1), sizeof(arithmetic), sizeof(num2));
아래와 같이 해야 합니다.
scanf_s("%d %c %d", &num1, &arithmetic, sizeof(arithmetic), &num2);
틀린 곳 2
printf("%d %c %d = %d\n", num1, arithmetic, num2, (float)num1 / num2);
아래와 같이 해야 합니다.
printf("%d %c %d = %f\n", num1, arithmetic, num2, (float)num1 / num2);
- char의 경우에만 sizeof를 써줘야 하는 이유가 무엇일까요? kimsj5522@snu.ac.kr 2023.1.2 09:27
- @kimsj5522 : 다큐멘테이션을 읽어서 확인하는 습관이 필요합니다. https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l 에 가서 문서를 꼼꼼히 읽으세요. 설명이 있습니다. 단, 기계번역된 한국어문서는 이 특정부분 설명하는 부분 오역되어 있어요. 영문원본을 확인해서 읽으세요. nowp 2023.1.2 15:00
댓글 입력