Я пытаюсь выяснить, почему мне не хватает первой строки 2D-массива, содержащейся в моей структуре. Я напечатал первое значение первой строки до выхода из предыдущей функции, которая присваивает значения 2D-массиву. В следующей вызываемой функции, которая будет действовать на основе значений в массиве, я снова напечатал значение, чтобы увидеть, совпадают ли они, но это не так. Значение, которое напечатано, является первым значением второй строки. Печать остальной части двумерного массива показывает, что мне не хватает всей первой строки, хотя последний оператор печати перед выполнением этой функции показал, что первая строка есть. Между последним оператором print и этим оператором print нет других операторов, кроме вызова функции.
filename.csv
ProcessID,AT,BT,Priority
2,0,5,4
3,0,3,2
1,9,8,1
4,4,6,3
...
typedef struct _Scheduler {
int processes[10][4];
...
} Scheduler;
void readfile(char *file) {
Scheduler data;
FILE *fp = fopen(filename, "r");
// ignore first line
// add integers to 2D array
....
....
fclose(fp);
for(int i = 0; i < 10; i++) {
for(int j = 0; j < 4; j++) {
printf("%d,", data.processes[i][j]);
}
...
printf("\n");
}
// prints
// 2,0,5,4
// 3,0,3,2
// 1,9,8,1
// 4,4,6,3
}
void FCFS() {
Scheduler data;
for(int i = 0; i < 10; i++) {
for(int j = 0; j < 4; j++) {
printf("%d,", data.processes[i][j]);
}
printf("\n");
}
// prints
// 3,0,3,2
// 1,9,8,1
// 4,4,6,3
}
int main(int argc, char **argv) {
readfile(argv[1]);
FCFS();
...
}
Я ожидаю, что data.processes [0] [0] в FCFS () выведут 2, ноон печатает 3. Печать остальных значений показывает, что отсутствует первая строка, хотя в конце последней функции она печатает все 4 строки.