我有一个看起来很简单的问题,感觉它会有一个非常直截了当的答案。我以前曾多次使用malloc,但由于某种原因,它没有分配足够的内存来包含文件中的数据—尽管是C语言的新手,但我感觉好像忽略了一些非常明显的东西,这让我很沮丧。任何帮助都将不胜感激。
文件
---------用户---------
ID:0
姓名:克里斯
性别:m
年龄:21岁
代码

const int BUFFER = 64;
char **fileContent;
int i;

// Code that opens file - tested

fileContent = (char**)malloc(BUFFER * sizeof(char*));

for(i = 0; i < BUFFER; i++)
{
    fileContent[i] = (char*)malloc(BUFFER * sizeof(char));
    fgets(fileContent[i], BUFFER, fp);
}

我知道上面的一些实践很差,但这是我为了测试目的而隔离的一个片段。我遇到的问题是,只有文件的第一行被读入fileContent数组。VS调试器看起来像这样。。。
文件内容0xblah{0xblah“---用户--------\n”}
                           0xblah "--------- USERS ---------\n"

                           45 '-'

应该在fileContent下面的两个名称(我假设fileContent[I])不存在。有什么想法吗?提前谢谢你的帮助。

最佳答案

你的代码看起来是对的。检查malloc的返回值。

fileContent[i] = (char*)malloc( BUFFER * sizeof(char) );
if ( fileContent[i] == NULL )
{
    printf( "Error in memory allocation." );
    exit( -1 );
}

09-11 19:24