第一次提问,请多多指教:)
我必须编写一个程序,能够接收成绩文件,读取它们,然后提供一些选项来编辑该文件。我决定用 C 语言编写它(为了挑战,并了解更多关于 C 的知识)。我有一个函数,它接收一个指针,然后打开一个文件并将该文件中的字符加载到该指针提供的内存中。
我遇到的问题是使用 realloc 获得足够大的列表大小以加载文件。我目前只是加载填充大小。
供参考: 将数据从文件加载到列表的功能。
void loadFile(char **fileContents) {
printf("%d\n", *fileContents);
*fileContents = realloc(*fileContents, 200);
printf("%d\n", *fileContents);
printf("%d\n", sizeof *fileContents);
}
选择各种选项来编辑该列表的功能(也在声明
fileContents
的地方)。
void menu() {
char *fileContents = malloc(sizeof(char) * 20);
if (fileContents == NULL) {
puts("memory failed to initialize");
}
loadFile(&fileContents);
printf("%s\n", fileContents);
free(fileContents);
}
我原本期望在
loadFile
函数中得到最后一个打印语句的大小 200,但结果却是 4。非常感谢所有答案!!!
在
loadFile
函数中,fileContents
是一个指针。显然,在您的系统上,指针是 32 位或 4 字节。
从
malloc
、calloc
、realloc
返回的指针不携带任何有关分配了多少数据的信息。它只是指向该内存块开头的指针。