变量' buff'正在使用而没有被定义

时间:2015-06-04 17:15:32

标签: c arrays text runtime

我需要从文本文件中读取一些数据并将其存储在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行中的buff定义更改为:

时,为什么它不起作用?
char (*buff)[100];

我希望这个定义也能奏效。 我得到的错误:

Run-Time Check Failure #3 - The variable 'buff' is being used without being defined

1 个答案:

答案 0 :(得分:3)

char (*buff)[100];

这里buff是一个指向100个字符数组的指针。因此,首先应该将指针指向有效的内存位置,然后再在其中存储一些值。

假设您想要进行动态内存分配,那么您可以

char *buff[100];

现在在fgets()循环中,将内存分配给每个指针,如

buff[i] = malloc(100); 

注意这里buff是一个包含100个char指针的数组。