我们创建了一个固定长度的char数组。现在,我们在该数组中写一个单词或一个句子。但是,这个单词句子的长度比char数组的长度短,所以当我们用printf函数打印消息时,还会打印一些垃圾字符。我们想要删除所有这些字符,即使写入的消息长度是可变的。 谢谢!
答案 0 :(得分:3)
C字符串由NUL字节('\0'
)终止。如果您没有此终结符,则printf
不知道您的字符串已结束。解决方案是在数组后面加上\0
。
注意:学会使用std::string
来管理这个。
答案 1 :(得分:0)
如果不是您想要的,您是否考虑过不使用固定数组大小?您可以使用char*
代替动态分配它的大小。
如果由于某种原因需要固定大小,我能想出的唯一解决方案是在单独的变量中跟踪该单词的长度,然后仅打印n个第一个字符。据我所知,没有办法确定哪些字符有效以及哪些字符不在数组中。
答案 2 :(得分:0)
除此之外,如果你的缓冲区应该只是一个字节数组而不是一个(空终止的)字符串,那么你可以使用fwrite代替fprintf来转储内容。
但总的来说,我同意其他人认为使用std :: string会更好。