为什么打印字符串显示垃圾[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么打印字符串显示垃圾[关闭]相关的知识,希望对你有一定的参考价值。

您好我是C的新手,我正在尝试打印我自己设置的字符串,但它会打印垃圾。

我知道id[4]''所以我没有设置它。

int main(){
    char id[5];
    printf("Enter a string
");
    id[0]=1;id[1]=2;id[2]=3;id[3]=4;
    printf("You entered the string %s
",id); 
}
答案

我知道id[4]''

嗯,你错了。

id是一个自动局部变量,除非明确初始化,否则它包含不确定的值。所以,你不能确定任何价值,更不用说''了。

引用C11,§6.7.9

如果未显式初始化具有自动存储持续时间的对象,则其值不确定。 [....]

但是,如果你初始化它就像

 char id[5] = {0};

然后,通过初始化规则,所有元素都被初始化为0,然后您可以依赖于空终止。

以上是关于为什么打印字符串显示垃圾[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

HTML代码片段

一个具有两种显示类型的片段[关闭]

为啥这段代码会打印出无穷大的数字? [关闭]

UTF-8 字符显示为垃圾值

将 javascript 字符串传递给 std::string 打印垃圾值

解决方案电影标题中缺少代码的片段,完成挑战更多[关闭]