C语言中字符数组输出“烫烫烫烫烫烫烫”,如何解决

Python013

C语言中字符数组输出“烫烫烫烫烫烫烫”,如何解决,第1张

字符数组最后加上 '\0',作为字符串结束标志。

strcpy(studname[k],ntemp)

bai strcpy(studname[i],studname[k])

strcpy(ntemp,studname[i])

strcpy(ntemp,studname[k])

strcpy(studname[k],studname[i])

strcpy(studname[i],ntemp)

扩展资料:

如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。

如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。

参考资料来源:百度百科-字符数组

一般出现这种情况就是你引用了你没有初始化的内存空间的。输出"烫烫烫烫"是因为vc会自动把未用函数的局部变量空间按字节全部初始化为CC(打个比方,你定义一个10个元素的char数组,结果你初始化了2个元素,后面没初始化,没赋值,没有使用,就变CC了)。CC CCH在Unicode的编码中就是表示中文的“烫”,所以就是很多“烫”字。

局部变量在没有初始化时, C语言规范要求是随机值.

但VC系列没有按照这个规定来做, 而是把没有初始化的栈空间赋值为0xCC.

于是 在输出未初始化的局部变量字符串时,就会输出

0xCC对应的字符. 而两位代表一个汉字, 0xCCCC就是汉字烫.