【发布时间】:2012-11-15 20:40:10
【问题描述】:
如果我试图扫描一个未知长度的字符串,一次扫描一个字符并构建一个字符链表来创建字符串是否是一种好方法?我目前面临的唯一问题是我不确定如何在不要求用户一次输入一个字符的情况下一次处理一个字符的字符串,这是不合理的。有更好的方法吗?我想避免为了容纳大多数字符串而分配任意大尺寸的 char 数组。
【问题讨论】:
-
“我想避免为了容纳大多数字符串而分配任意大的字符数组。”你知道一个链表占用多少空间吗?我给你一个提示:很多。 (与字符相比)
-
取决于,你打算用那个字符串做什么?
-
不要使用
scanf,使用getc(或getchar)。分配一个初始缓冲区,并将字符读入该缓冲区。当缓冲区已满时,使用realloc扩大缓冲区。重复这个过程,直到你读完整个字符串。 -
这主要用于学校实验室作业。我不确定输入字符串在标记程序测试时会有多大,所以我必须准备好适应任何大小。
-
@Lee 或者你可以使用
getline...
标签: c string data-structures linked-list char