Я получил эту функцию:
#define DIGITS_MAXIMUM_NUMBER 10
int* read_from_file(const char* file_name)
{
int limit = 101;
int *values = (int *) malloc(sizeof(int) * limit);
FILE *fp = fopen(file_name, "r");
char string_value[DIGITS_MAXIMUM_NUMBER];
int i = 1;
while(fgets(string_value, DIGITS_MAXIMUM_NUMBER, fp) != NULL)
{
if (i >= limit) {
limit += 100;
values = realloc(values, limit);
}
values[i] = atoi(string_value);
i++;
if ( i >= 106 )
printf("%d\n", i);
}
values[0] = i;
if (i != limit)
values = realloc(values, i);
fclose(fp);
return values;
}
Я получаю ошибку сегментации на 106-й итерации, это означает, что цикл работает, но на этой определенной итерации, когда выполняется fgets, возникает ошибка сегментации.
Если кто-нибудь знает почему или имеет хотя бы свое мнение, было бы здорово поделиться, спасибо.
🤔 А знаете ли вы, что...
C предоставляет возможность работы с низкоуровневыми аппаратными ресурсами, такими как порты ввода-вывода и регистры устройств.