你是做串拼接是吧,下面是在你代码上面修改的结果,注释部分是有问题的。
#include<stdioh>void main()
{
char s1[40],s2[20];
int i,j;
memset(s1,0,sizeof(s1));//串初始化,否则只有一个串结束符,后面的就是乱码了
printf("请输入字符串s1:");
gets(s1);
printf("请输入字符串s2:");
gets(s2);
for(i=0,j=0;s2[j]!='\0';i++)
{
if(s1[i]=='\0')
{
s1[i]=s2[j];
j++;
}
}
printf("s1:%s\n",s1);
getch();
}
望采纳!
把出现烫烫的那个字符串初始化下就行
比如是 char name[50]=“ ”,赋值为空就行了
举个例子
#include<iostream>
#include<stringh>
using namespace std;
void main()
{
char name[50][50];
cin>>name[1];
cin>>name[2];
cin>>name[3];
for(int i=0;i<3;i++)
puts(name[i]);
}
输出就是
#include<iostream>
#include<stringh>
using namespace std;
void main()
{
char name[50][50]={};//////////////初始化
cin>>name[1];
cin>>name[2];
cin>>name[3];
for(int i=0;i<3;i++)
puts(name[i]);
}
先说你问的问题吧因为数组的长度是20个,你直接使用的长度只有 weere加个结束符\0是6个,也就是后面14个都是没使用过的但是
for(int k=0;k<20;k++)
cout<<b[k];
这样就把没使用过的也输来了,没用过的字符处是系统给的默认值,所以有好几个烫
再说个题外话你这程序的问题,找到要删除的字符就设置成\0是不行的,因为字符串结束标记是\0如果你把要删除的字符设置成\0,比如 abc你要删除b最后就成了 a\0c 这时如果直接输出这个字符串,到a就断了,后面的c不会出来,因为遇到了\0
以上就是关于为什么这个程序执行的结果出现很多‘烫’字求大神解答!全部的内容,包括:为什么这个程序执行的结果出现很多‘烫’字求大神解答!、为什么这个程序执行的时候会出现 烫烫烫。。。。急求啊~~!!!!、为什么我的C++程序运行有六个烫等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)