您好我是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);
}
答案 0 :(得分:7)
我知道
id[4]
是'\0'
嗯,你错了。
id
是一个自动局部变量,除非明确初始化,否则它包含不确定的值。所以,你不能确定任何价值,更不用说'\0'
。
引用C11
,§6.7.9
如果没有显式初始化具有自动存储持续时间的对象,则其值为 不定。 [....]
但是,如果你像
那样初始化它 char id[5] = {0};
然后,通过初始化规则,所有元素都被初始化为0,然后您可以依赖于空终止。