我正在尝试使用fscanf
从txt文件中读取内容。我每次只读一个字。我正在计算我收集了多少单词。这样我就可以创建一个包含单词数的动态数组。数组的每个元素都包含一个单词。但我不知道怎么做。这是我的代码
pFile = fopen(inFile, "r");
char *chr;
if(pFile != NULL) // Process if the file is not empty
{
while(!feof(pFile))
{
chr = (char*)malloc(sizeof(char*));
num++;
fscanf(pFile, "%s", chr);
}
printf("%s",chr);
}
我的txt文件示例如下:hello world
答案 0 :(得分:1)
sizeof
是一个编译时运算符(可变长度数组除外)。特别是,sizeof(char*)
是指向char
的指针的大小,通常在32位计算机中为4,在64位计算机中为8。所以尺寸不像你想象的那么动态。
另一种方法是先malloc
一个小数组,使用fgets
获取该行,如果大小太小(可以检查是否有\n
),{ {1}}更大的尺寸。使用realloc
从该行获取数据。
此外,您永远不会释放动态分配的内存,因此存在内存泄漏。