c编程中的字符串在输出结尾处具有垃圾值

时间:2017-11-05 06:26:04

标签: c string

{{1}}

输出: ram(垃圾值) str的大小是3,它的值大小为3.我希望ra作为我的答案,当然null值将结束。但我得到公羊(垃圾价值)。 请有人帮我解决我的问题。

3 个答案:

答案 0 :(得分:3)

在C中,字符串是一个末尾带有空字符的字符数组。但是在您的情况下,字符数组只有3个元素,因此,虽然您要将"ram"分配给char str[3],但只分配了'r''a''m''\0'不是。因此,printf无法判断字符串的结束位置并继续打印垃圾值。

答案 1 :(得分:0)

如果您只想打印指定数量的字符,则可以使用
"%(你想要的字符数)s"

eg printf("%2s"); 
will print ra

答案 2 :(得分:0)

如果你想让字符串保持" ram",你需要为字符加上长度为4. 3,为空值加上1。

char str[4] = "ram";
printf("%s",str);

//output:
ram