Переменная 'buff' используется без определения
Мне нужно прочитать некоторые данные из текстового файла и сохранить их в 2D-массиве. Этот код работает хорошо:
#include <string.h>
#include <stdio.h>
int main() {
FILE *f = fopen("Read.txt", "r");
char buff[100][100];
char str[100];
int i = 0;
while(fgets(str, 100, f)) {
strcpy(buff[i], str);
i++;
}
return 0;
}
Но почему это не работает, когда я пытаюсь изменить определение баффа в строке 5 на:
char (*buff)[100];
Я ожидал, что это определение тоже сработает. Ошибка, которую я получаю:
Run-Time Check Failure #3 - The variable 'buff' is being used without being defined
1 ответ
Решение
char (*buff)[100];
Вот buff
указатель на массив из 100 символов Поэтому сначала вы должны указать указатель на правильную ячейку памяти, прежде чем сохранять в ней какое-либо значение.
Предполагая, что вы хотите пойти на динамическое распределение памяти, то вы можете иметь
char *buff[100];
Сейчас в fgets()
цикл выделяет память для каждого указателя в отдельности, как
buff[i] = malloc(100);
Обратите внимание, что buff - это массив из 100 указателей на символы.