【发布时间】:2011-05-14 02:38:03
【问题描述】:
我需要做的是:
- 打开一个文件(使用 fopen())
- 读取学生的姓名(使用 fgetc())
- 将该名称存储在结构的某些部分中
我遇到的问题是我需要将任意长字符串读入名称,我不知道如何存储该字符串而不浪费内存(或写入未分配的内存)。
编辑
我的第一个想法是分配一个 1 字节 (char) 内存块,然后在需要更多字节时调用 realloc() ,但这似乎效率不高。或者,如果数组已满,我可以将其加倍,然后最后将字符复制到确切大小的新内存块中。
【问题讨论】:
-
您对 realloc 将大小加倍的编辑建议对我来说似乎很好。您可以从一个可能足够大的数组开始(假设您知道它是一个学生姓名)并在大多数情况下避免重新分配。 Supercalifragilisticsuperalidoscious Antidisestablishmentarianism 先生不会去你的学校。
-
@Paul- 你确定他没有?
-
你不需要将字符复制到一个大小正好合适的新内存中——你可以在最后再次使用
realloc()将分配的块修剪到合适的大小。
标签: c