我什么时候需要添加空终止符?

时间:2015-10-17 17:42:54

标签: c

我知道在C中,您总是需要添加一个空终止符func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { return //all subviews in scrollview } ,以便处理器知道单词何时结束。

但是我很难理解你何时必须这样做。所以例如这个代码在没有它的情况下适合我:

\0

怎么可能? 你什么时候真的要添加它们?

3 个答案:

答案 0 :(得分:3)

sprintf始终以null character终止,因此无需手动添加。

来自C99标准 -

  

7.21.6.6 sprintf函数

     

[...]在写入的字符末尾写入空字符;它不计入返回值的一部分。如果在重叠的对象之间进行复制,则行为未定义。

答案 1 :(得分:2)

  

例如,这段代码在没有它的情况下适用于我

它没有(没有)。

字符串文字"AT+CWJAP=\"%s\",\"%s\""在末尾有一个空终止符(就像每个字符串文字一样)。 sprintf也将空终结符复制到connectcmd

  

你什么时候真的要添加它们?

当您手动构建字符串或使用库文档时,其文档明确声明它不会添加终止空值。

答案 2 :(得分:2)

sprintf写入一个空终止字符串connectcmd,无论其初始内容如何。只要您不尝试超出缓冲区的范围,就可以正常工作。

最重要的是,当你这么说时:

char connectcmd[50]={0};

connectcmd的所有50个元素初始化为零,这是空终止符\0的值。因此,只要您编写的字符少于50非空字符,即使您手动为其写入字符,也会以空值终止。