c언어 scanf_s 오류 이렇게 적고 실행시켜보면 결과가 이상하게 나와요. 버전은 2022 입니다. // 실행결과 // 이렇게 적고 실행시켜보면 결과가 이상하게 나와요. 버전은 2022 입니다. // 실행결과 // 좋아하는 과일 : 망고 // 몇 개 : 3 // 망고를 3개 드립니다. #include int main() { char fruit[20]; int cnt; printf("좋아하는 과일 ? : "); scanf_s("%c", fruit); printf("몇 개 ? : "); scanf_s("%d", &cnt); printf("%s를 %d개 드립니다.", fruit, cnt); return 0; }
코드에 몇 가지 문제가 있습니다.
문제점 및 수정 사항
1. scanf_s("%c", fruit); → scanf_s("%s", fruit, (unsigned)_countof(fruit));
• %c는 한 글자만 입력받는 형식이므로, 문자열을 받으려면 %s를 사용해야 합니다.
• scanf_s를 사용할 때 문자열을 받을 경우, 버퍼 크기 정보를 추가로 제공해야 합니다.
2. printf("%s를 %d개 드립니다.", fruit, cnt); → printf("%s를 %d개 드립니다.\n", fruit, cnt);
• 출력 후 개행(\n)을 추가하면 다음 출력이 깔끔하게 정리됩니다.
—————————————
수정된 코드
#include <stdio.h>
int main()
{
char fruit[20]; // 문자열을 저장할 배열
int cnt; // 개수를 저장할 변수
printf("좋아하는 과일 ? : ");
scanf_s("%s", fruit, (unsigned)_countof(fruit)); // 문자열 입력 (크기 명시)
printf("몇 개 ? : ");
scanf_s("%d", &cnt); // 정수 입력
printf("%s를 %d개 드립니다.\n", fruit, cnt); // 출력
return 0;
}
——————————-
실행 결과 예시
좋아하는 과일 ? : 망고
몇 개 ? : 3
망고를 3개 드립니다.
이제 올바르게 동작할 것입니다.