когда код отлажен, одна из моих функций выдает исключение при записи, и я не совсем уверен, почему. проблема выбрасывается из моей функции computeFunction, целью которой является установка нескольких значений. он вызывается внутри цикла и содержит множество значений int, а также адрес для 4-х двойных, включая homeOffense (который выдает исключение).
Я посмотрел на код, который делает то, что я пытаюсь сделать, и я не вижу разницы в том, что я делал.
void main() {
int homeAttackStrength, homeDefensiveStrength, homeGoalieRating, homeFieldAdvg, homeExp, visitAttackStrength,
visitDefensiveStrength, visitGoalieRating, visitRoad, visitExp, weather, hScore, vScore, gameCount, x;
double homeOffense, visitO, crowd, experience,homeWinCount,drawCount,homeWin,draw;
char home[20], visit[20];
FILE *fpi1, *fpo1;
fpi1 = fopen("soccer1.txt","r");
homeWinCount = 0;
drawCount = 0;
gameCount = 0;
x = 0;
while (getInput(fpi1, home, &homeAttackStrength, &homeDefensiveStrength, &homeGoalieRating, &homeFieldAdvg, &homeExp,
visit, &visitAttackStrength, &visitDefensiveStrength, &visitGoalieRating, &visitRoad, &visitExp, &weather) != EOF) {
computeFunctions(homeAttackStrength, homeDefensiveStrength, homeGoalieRating, homeFieldAdvg, homeExp, visitAttackStrength,
visitDefensiveStrength, visitDefensiveStrength, visitGoalieRating, visitRoad, visitExp, &homeOffense, &visitO, &crowd, &experience);
...
void computeFunctions(int homeAttackStrength, int homeDefensiveStrength, int homeGoalieRating, int homeFieldAdvg, int homeExp,
int visitAttackStrength, int visitDefensiveStrength, int visitGoalieRating, int visitRoad, int visitExp, double *homeOffense,
double *visitO, double *crowd, double *experience) {
*homeOffense= (HOME_SCORING_ADVANTAGE * homeAttackStrength + HOME_SCORING_ADJUSTMENT) / (((long double)visitDefensiveStrength + (long double)visitGoalieRating) * AWAY_IMPACT);
*visitO= ((long double)visitAttackStrength + (long double)visitExp) * AWAY_IMPACT - ((long double)homeDefensiveStrength + (long double)homeGoalieRating + homeExp * EXPERIENCE_ADJUSTMENT);
*crowd= HOME_FIELD_IMPACT * homeFieldAdvg / visitRoad;
*experience= ((long double)homeExp - (long double)visitExp) * EXPERIENCE_ADJUSTMENT;
}
сообщение об ошибке:
Исключение: нарушение прав записи.
homeOffense
был 0x2
.