C언어 C6201 스택에 할당되었을 가능성이 있는 버퍼 'grade'에 대해 인덱스 '5'이(가) 유효한 인덱스 범위 '0' - '4'을(를) 벗어납니다.
조회수 619회
#include <stdio.h>
#define size 5
int main(void)
{
int grade[size]; {};
grade[size] = 0;
int i, min, max, sel; {
for (i = 0; i < size; i++)
{
printf("성적을 입력하시오:");
scanf_s("%d", &grade[i]);
}
printf("메뉴를 선택하세요 : 1. 최소값 2.최대값\n");
scanf_s("%d", &sel);
min = grade[0];
max = grade[0];
for (i = 1; i < size; i++)
{
if (sel == 1)
{
if (min > grade[i])
min = grade[i];
}
else
{
if (max < grade[i])
max = grade[i];
}
}
if (sel == 1)
printf("최소값은 %d입니다.\n", grade[i]);
else
printf("최대값은 %d입니다.\n", grade[i]);
return 0;
}
}
오류가 나오는데 어떻게 처리 해야 될지 모르겠어요
심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태
경고 C6386 'grade'에 쓰는 동안 버퍼 오버런이 발생했습니다.
Project19 C:\Users\이민재\source\repos\Project19\Project19\소스.c 16
심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태
오류 C4789 버퍼 'grade'(크기: 20바이트)이(가) 오버런됩니다. 4바이트가 오프셋 20부터 쓰입니다.
Project19 C:\Users\이민재\source\repos\Project19\Project19\소스.c 16
심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태
경고 C6201 스택에 할당되었을 가능성이 있는 버퍼 'grade'에 대해 인덱스 '5'이(가) 유효한 인덱스 범위 '0' - '4'을(를) 벗어납니다.
Project19 C:\Users\이민재\source\repos\Project19\Project19\소스.c 16
1 답변
-
int grade[size]; {}; grade[size] = 0;
위의 두 줄을 아래처럼 바꾸세요.
int grade[size];
-
(•́ ✖ •̀)
알 수 없는 사용자
- 이렇게 하면 쓰레기 값이 나와서 이민재 2022.5.29 13:52
- 일단 에러는 해결된 거구요. 출력이 이상한 이유는 printf("최소값은 %d입니다.\n", grade[i]);에서 grade[i]가 아니고 min을 출력해야 합니다.printf("최소값은 %d입니다.\n", min); 처럼요. 그 아래의 최대값의 경우는 grade[i]대신 max로 교체해야 합니다. 알 수 없는 사용자 2022.5.29 18:38
- 감사합니다 해결 되었습니다!!!!4 이민재 2022.5.29 22:13
-
댓글 입력