Переменная '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 указателей на символы.

Другие вопросы по тегам