删除不需要的字符

时间:2016-04-08 11:19:03

标签: c++

我们创建了一个固定长度的char数组。现在,我们在该数组中写一个单词或一个句子。但是,这个单词句子的长度比char数组的长度短,所以当我们用printf函数打印消息时,还会打印一些垃圾字符。我们想要删除所有这些字符,即使写入的消息长度是可变的。 谢谢!

3 个答案:

答案 0 :(得分:3)

C字符串由NUL字节('\0')终止。如果您没有此终结符,则printf不知道您的字符串已结束。解决方案是在数组后面加上\0

注意:学会使用std::string来管理这个。

答案 1 :(得分:0)

如果不是您想要的,您是否考虑过不使用固定数组大小?您可以使用char*代替动态分配它的大小。

如果由于某种原因需要固定大小,我能想出的唯一解决方案是在单独的变量中跟踪该单词的长度,然后仅打印n个第一个字符。据我所知,没有办法确定哪些字符有效以及哪些字符不在数组中。

答案 2 :(得分:0)

除此之外,如果你的缓冲区应该只是一个字节数组而不是一个(空终止的)字符串,那么你可以使用fwrite代替fprintf来转储内容。

但总的来说,我同意其他人认为使用std :: string会更好。