Найти значение N
только чтение первой строки:
int N = 0;
char* line = NULL;
ssize_t read, len;
if ((read = getline(&line, &len, file_ptr)) != -1) {
char *n = strtok(line, " ");
do {
N++;
} while ((n = strtok(NULL, " ")) != NULL);
free(line);
line = NULL;
}
fseek(file_ptr, 0, SEEK_SET);
Поскольку функция ftell
возвращает только длину файла в байтах, ее нельзя использовать для получения числа целых чисел, поскольку вномера ваших файлов ASCII разделены пробелом " "
.Поэтому после извлечения первой строки файла вы можете токенизировать ее с помощью strtok
, разделяя ее пробелом и беря в ней число целых чисел:
char *n = strtok(line, " ");
do {
N++;
} while ((n = strtok(NULL, " ")) != NULL);
Также не забывайте #include <string.h>
для функции strtok
.
Обратите внимание также на calloc
размеры:
int **file_matrix = (int**)calloc( N , sizeof(file_matrix));
file_matrix[i] = (int*) calloc( N , sizeof(file_matrix));
должно быть
int **file_matrix = (int**) calloc( N , sizeof(int*));
file_matrix[i] = (int*) calloc( N , sizeof(int));