所以我知道您应该将char数组声明为比要放置的单词大一个元素,因为\0
必须在末尾,但是char数组呢?想用作文字吗?
我目前正在编写一个程序,其中存储了一组分配有某些功能的键盘字母。我是否还应该使用\0
结束该数组?
答案 0 :(得分:7)
那可能没有必要。
char
数组不需要空终止符;它是“ C字符串”的要求,您打算将其用作数据的单一Blob,尤其是如果您打算将它们传递给C API函数。确定字符串的“长度”是常规方法。
但是,如果您只想单独使用char
的集合,那就把自己淘汰掉。
我们看不到您的代码,但在我看来,您在这种情况下不需要或不需要它。
答案 1 :(得分:5)
该数组至少应具有与要放入其中的数据相同数量的元素。因此,如果:
...您可以不用尾随'\ 0'
答案 2 :(得分:4)
如果您使用的是C ++,则可能应该只使用std::string
或std::vector<char>
甚至是std::array<char>
,而不必担心终止符。
答案 3 :(得分:3)
这取决于用法。如果您不希望将其用作字节数组,而是用作c字符串,并可能使用某些标准字符串算法(strcmp
等),或者将其输出到流中,则您的数组应以{{1 }}。
答案 4 :(得分:1)
这取决于您要执行的操作,如果要定义 C风格的字符串,则需要终结符,因为C库将无法计算字符串的大小还有其他东西 ...
但是,在C ++中,字符串的大小已经与std::string
s的动态数组一起存储在char
类中。
但是,如果您只需要一个免费的容器来存储字符,而无需使用它来做类似
char hello[128]; // 128 elements, do anything with them...
没有终结者...
在您的情况下,您正在存储值,而不是创建 string ,并且您也可能不会将其视为字符串,因此请没有空终止符就足够了...
答案 5 :(得分:0)
\0
当然可以简化使用strlen
,strcmp
,strcat
之类的功能时的操作,但不是必需的。