为什么打印字符串显示垃圾

时间:2017-12-19 16:01:45

标签: c initialization

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

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

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

1 个答案:

答案 0 :(得分:7)

  

我知道id[4]'\0'

嗯,你错了。

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

引用C11,§6.7.9

  

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

但是,如果你像

那样初始化它
 char id[5] = {0};

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

相关问题