Я довольно новичок в программировании на C и хочу прочитать матрицу из данного файла, в этом файле элементы разделены пробелом.Я попытался с помощью следующего кода, обратите внимание, что он компилируется быстро, но когда я проверяю содержимое в моей матрице, первые 2 элемента в каждой строке искажаются до -2145378576 22099:
typedef struct matrix {
int nrow;
int ncol;
int** data;
} matrix;
matrix* mread(char* filename) {
FILE* f = fopen(filename, "r");
char line[256];
matrix* result = malloc(sizeof(matrix));
int** data = malloc(0);
int ncol, nrow = 0;
while (fgets(line, sizeof(line), f)) {
char* token = strtok(line, " ");
int* temp = malloc(sizeof(int));
ncol = 0;
while (token != NULL) {
temp = realloc(temp, ++ncol * sizeof(int));
temp[ncol - 1] = strtol(token, NULL, 10);
token = strtok(NULL, " ");
}
data = realloc(data, ++nrow * sizeof(temp));
data[nrow - 1] = temp;
free(temp);
}
result->ncol = ncol;
result->nrow = nrow;
result->data = data;
free(data);
fclose(f);
return result;
}
Теперь, когда я пыталсячтобы прочитать матрицу из проекта Euler # 11, я обнаружил, что первые 2 элемента в каждой строке искажены.Тем не менее, я не могу понять, где проблема (я знаю, что это где-то около realloc
для data
...)
Заранее спасибо!