在我的程序中,我从 .txt 文件中读取单词,并将它们插入到链表和哈希表中。
如果在一个单词之后连续读取两个 '\n' 字符,那么程序将读取的第二个单词将是 '\n',但是我用 '\0' 覆盖它,所以基本上字符串只包含 '\0 '。
是否值得我放一个 if 语句,以便我的程序的下一部分仅在单词是真实单词时执行(即 word[0] != '\n')?字符串 '\0' 会用完散列表/链表中的空间吗?
在 C 中,第一个元素为的字符数组\0
是一个空字符串,即长度为零。如果您要问的话,将空字符串保留在容器中没有多大意义。
这取决于您是否将空字符串视为有效条目。您似乎在存储单词,所以我猜想空字符串是没有意义的,但这是特定于应用程序的。
例如,可以存在一个环境变量(getenv
返回一个有效指针),但该值可以是“未设置”:一个空字符串。在这种情况下,值是空字符串这一事实可能很重要。
那么,如果一个空字符串不重要,是否值得添加一条if
语句来忽略它?通常这将是“是”,因为存储和维护空字符串的开销可能远远超过if
每个条目的一条语句。但当然这只是一个猜测,我不知道您的开销是多少,if
执行多少次,以及您将保存多少个空字符串条目。你可能也不知道,所以我的后备立场是只存储重要的数据。