C 语言代码出错为什么显示「烫烫烫」,而不是其它字

作者&投稿:爨闸 (若有异议请与网页底部的电邮联系)
局部变量在没有初始化时, C语言规范要求是随机值.
但VC系列没有按照这个规定来做, 而是把没有初始化的栈空间赋值为0xCC.
于是 在输出未初始化的局部变量字符串时,就会输出
0xCC对应的字符. 而两位代表一个汉字, 0xCCCC就是汉字烫.

C语言写文件的时候出现乱码“烫烫烫烫烫烫烫烫”是怎么回事~

这是你定义的字符串没有初始化为0,当输出的时候编译器找到不到字符串结束符。就会出现这样的乱码。你可以将你的结构体中定义的字符数组都初始化为0.或者直接用memset()把结构体定义的变量初始化为0试一下。你的程序没有具体看,不过应该就是这个问题吧~

出现“烫”的原因是由于字符数组中的某些数组元素没赋值。

具体原因可以通过如下实例来进行说明:
char a[10];
a[0] = 'a';
a[1] = 'b';
a[2] = 'c';
a[3] = 'd';
printf("%s", a); // 输出结果就会出现很多“烫”,因为只对数组a中前四个元素进行了赋值,后面的元素未进行赋值,所以计算机默认就输出“烫”

如果作如下修改就会正常输出

char a[10];
a[0] = 'a';
a[1] = 'b';
a[2] = 'c';
a[3] = 'd';
a[4] = '\0';
printf("%s", a); // 输出abcd,因为加了结束字符'\0',而C语言中输出字符串是以结束字符'\0'作为结束输出的,所以只输出'\0'前面的所以字符,即abcd