我有一个看起来很简单的问题,感觉它会有一个非常直截了当的答案。我以前曾多次使用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 );
}