当字符串只包含'\ 0'时会发生什么? C

时间:2013-01-13 16:03:11

标签: c string

在我的程序中,我正在读取.txt文件中的单词,我将它们插入到链表和哈希表中。

如果在一个单词之后连续读取两个'\ n'字符,那么程序将读取的第二个单词将是'\ n',但是然后我用'\ 0'覆盖它,所以基本上该字符串仅包含'\ 0'。

是否值得我添加一个if语句,以便我的程序的下一部分仅在单词是真实单词时执行(即单词[0]!='\ n')?字符串'\ 0'会在哈希表/链表中占用空间吗?

2 个答案:

答案 0 :(得分:1)

在C中,第一个元素为\0的字符数组是空字符串,即长度为零。将空字符串保存在容器中没有多大意义,如果这就是你所要求的。

答案 1 :(得分:0)

这取决于您是否将空字符串视为有效条目。你似乎在存储单词,所以我猜想空字符串是没有意义的,但这是特定于应用程序的。

例如,可以存在环境变量(getenv返回有效指针)但值可以是“未设置”:空字符串。在这种情况下,值为空字符串的事实可能很重要。

那么,如果空字符串不重要,是否值得添加if语句来忽略它?通常这将是“是”,因为存储和维护空字符串的开销可能远远超过每个条目一个if语句。但当然这只是一个猜测,我不知道你的开销是多少,if将被执行多少次,以及你将保存多少空字符串条目。您可能也不知道,所以我的后备位置只会存储重要的数据。