输出"烫烫烫烫"是因为vc会自动把未用函数的局部变量空间按字节全部裂正戚初始化为CC。
而定义的字符数组空间不够,所以就占用了那部分不属于自己的空间,因为cout输出char*是要遇到空字符才停止的,所以便把那些垃圾都打出来了。
即是说在最后没有字符串结束标志'\0'。
扩展资料:
字符串的函数应用
1、连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.
2、求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。肆陵
3、删除子串。过程 Delete(s,I,l) 从字符串清链s中删除第I个字符开始后的长度为l的子串。
例:s:=’abcde’delete(s,2,3)结果s:=’ae’
参考资料来源:百度百科-字符串
出现多个烫的原因可能是未孝握洞对字符数组或字符指针进行巧枯初始化或赋值。
举例说明如下皮袜:
char a[5]printf("%s", a) // 出现多个烫,原因是未对字符数组a进行初始化或赋值
首先你要知道为什么会输出烫烫烫
看下面的例子
可以看出来,output数组前10项都被设置为'a',也都正常输出了,但是后面的部分输出变成了烫烫烫
原因是字符串在输出时,会从头开始输出,直到遇到'\0'停止
而output数组在我们使用之前没有初始化过,所以除了前10项我们手动设置为'a',剩下的数困拆据还是混乱的值,所以就会输出烫烫烫了
要解决这个问题,手动在字符串结汪扮枣尾处补一个'缺蔽\0'即可,见以下代码:
#include <stdio.h>#include <math.h>
#include <stdio.h>
int main()
{
char output[100]
for (int i = 0i < 10i++)
{
output[i] = 'a'
}
output[10]='\0'
//如果把上一句删掉就会出现输出烫的错误
printf("%s\n", output)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)