我知道在C中,您总是需要添加一个空终止符func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return //all subviews in scrollview
}
,以便处理器知道单词何时结束。
但是我很难理解你何时必须这样做。所以例如这个代码在没有它的情况下适合我:
\0
怎么可能? 你什么时候真的要添加它们?
答案 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
非空字符,即使您手动为其写入字符,也会以空值终止。