一个关于C++输出的问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 13:48:19
#include<iostream>
using namespace std;
int main()
{char a[100],b[100];
int i=0,k;
cin>>a>>b;
for(i=0;a[i];i++)
k=i+1;
for(i=0;b[i];i++)
a[k+i]=b[i];
for(i=0;a[i];i++)
cout<<a[i];

}
运行这段程序后会出现很多个烫,为什么?
我要的就是不用〈string>类,还有,倒数第二行前面加上:a[k+i]='\0'也不行。

用char[]定义字符串时,最好初始都定义为0(部分编译器会自动初始化为0),因为系统不会对char[]自动在末尾加0的,定义时可以写为:
char a[100]={0},b[100]={0};

#include <string>

在输入前
memset(a,0,100);
memset(b,0,100);

试试

那是应为你在拷贝数组b的时候并没有把字符串的结束标志'\0'一起考到a里,所以输出的时候数组无法判断什么时候字符串结束了,就输出乱码了。在倒数第二行前面加上:a[k+i]='\0';就行了。

应该是少了\0吧,每个循环遇到这个东西会停掉,这样a的\0位置会写入b的第一个元素,而b的\0无法写如新字符串,要自己在循环结束后加个\0,否则会一直读完这一百个元素。而后面有许多未初始化的空间,读出来就是典型的乱码“烫”。我是初学者,说说自己的想法。