Все, кажется, прекрасно работать, за исключением, когда моя программа пытается вернуть 0, который, когда я получаю сообщение об ошибке:сигнал SIGABRT по возвращении 0
Thread_1: signal SIGABRT
Я не уверен, что я делаю неправильно, но я думаю, возможно, я использую свои указатели (передавая массив двойников по ссылке). Я считаю, что это связано с тем, когда моя память освобождается, я немного новичок, так что трудно понять это. Благодаря!
EDIT: readGrades() читает 4 целых чисел из текстового файла input.txt и добавить их в массив, который был принят в
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*
* readGrades()
* INPUT: double array of grades (double grades[])
* OUTPUT: number of grades read (int numOfGradesRead)
*/
int readGrades(double (*grades)[]) {
int numOfGradesRead = 0,
count = 0,
numRead;
char buf[1000];
FILE *file = fopen("input.txt", "r");
if (file == NULL) {
perror("Can't open file");
} else {
while (fgets(buf, sizeof(buf), file)) {
// Convert buf to integer
numRead = atoi(buf);
// Add number read to grades[]
if (numRead != -999) {
(*grades)[count] = numRead;
numOfGradesRead++;
count++;
}
}
}
fclose(file);
return numOfGradesRead;
}
void frequency(double grades[], int numOfGrades) {
}
int main() {
double grades[100];
int i;
// Initialize grades values to 0
for (i = 0; i < sizeof(grades)/sizeof(int); i++) {
grades[i] = 0;
}
int numOfGradesRead = readGrades(&grades);
for (i = 0; i < 4; i++) {
printf("%f", grades[i]);
}
return 0;
}
Hm похоже, что это также исправило проблему! Большое спасибо, я не поймал эту ошибку. Спасибо за другие указатели, очень полезно. – Brejuro