0
이름에 값을 입력 할 때마다 예외가 발생하는 이유를 알 수 없습니다.scanf 함수에서 배열을 전달할 때 예외가 발생했습니다.
Program3.exe의 0x0F59B211 (ucrtbased.dll)에서 예외가 발생하는 예외입니다. 0xC0000005 : 0xFFFFFFCC 위치 쓰기 액세스 위반입니다.
이 예외 처리기가있는 경우 프로그램을 안전하게 계속할 수 있습니다.
신입 회원이므로 철저히 설명해주십시오.
#include <stdio.h>
#include <string.h>
int askUser(char name[5][16],float hourlyRate[5],float hoursWorked[5])
{
int counter = 0;
for (int i = 0; i < 5; i++)
{
printf("enter name: ");
scanf_s("%15s", name[i], 16);
if (strcmp(name[i], "-1") == 0)
break;
printf("enter hourly rate: ");
scanf_s("%f", &hourlyRate[i]);
if (hourlyRate[i] == -1)
break;
printf("enter hours worked: ");
scanf_s("%f", &hoursWorked[i]);
if (hoursWorked[i] == -1)
break;
counter++;
}
return counter;
}
void main()
{
const float OVERTIMEHOURS = 40.0f;
const float OVERTIMERATE = 1.5f;
const float TAX = 0.20f;
char name[5][16] = { "", "", "", "", "" };
float hourlyRate[5] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
float hoursWorked[5] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
float amountPaid[5] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
float basePay[5] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
float overPay[5] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
float taxPaid[5] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
float netPay[5] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
float overTime[5] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
float totalPaid = 0.0f;
int counter = 0;
counter = askUser(name[5][16], &hourlyRate[5], &hoursWorked[5]);
}
버그를 재현하는 [최소 예제] (http://stackoverflow.com/help/mcve)를 제공하십시오. – wasthishelpful
프로그래밍 경력의이 단계에서 컴파일러에서 경고를 생성하면 코드에 버그가 있습니다. 길 아래로 몇 년이 지났지 만, 그보다 훨씬 더 자주 (100 회 중 99 회) 계속됩니다. –