专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

不要strcat函数连接两个字符串

发布时间:2011-06-28 10:59:29 文章来源:www.iduyao.cn 采编人员:星星草
不用strcat函数连接两个字符串
程序如下:
#include "stdio.h"
#include "conio.h"
#include "math.h"
main()
{char c,str1[100],str2[100],str3[300];
 int i,j;
 printf("Please input the first string\nConfirm by Enter\n");
 gets(str1);
 printf("Please input the second string\nConfirm by Enter\n");
 gets(str2);
 for(i=0;(c=str1[i])!='\0';i++)
 {str3[i]=str1[i];
 };
 j=i;
 for(i=0;(c=str2[i])!='\0';i++,j++)
 {str3[j]=str2[i];
 };
printf("The string which has been connected is:\n%s",str3);
 getch();
}

问题:
有时候能正常连接 而有的时候会出现一个小小的表情

------解决方案--------------------
第二个字节的结束符要放进去才对,改了一下。增加了一句。

#include "stdio.h"
#include "conio.h"
#include "math.h"
int main()
{
char c,str1[100],str2[100],str3[300];
int i,j;
printf("Please input the first string\nConfirm by Enter\n");
gets(str1);
printf("Please input the second string\nConfirm by Enter\n");
gets(str2);
for(i=0;(c=str1[i])!='\0';i++)
{
str3[i]=str1[i];
}
j=i;
for(i=0;(c=str2[i])!='\0';i++,j++)
{
str3[j]=str2[i];
}
str3[j]=str2[i];//'\0'要放进去才行。
printf("The string which has been connected is:\n%s",str3);
getch();
return 0;
}

------解决方案--------------------
memmove
------解决方案--------------------
先用bzero或memset初始化一下str3。
------解决方案--------------------

#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
char c,str1[100],str2[100],str3[300];
int i,j;
printf("Please input the first string\nConfirm by Enter\n");
gets(str1);
printf("Please input the second string\nConfirm by Enter\n");
gets(str2);
for(i=0;(c=str1[i])!='\0';i++)
{
str3[i]=str1[i];
};
j=i;
for(i=0;(c=str2[i])!='\0';i++,j++)
{
str3[j]=str2[i];
};

str3[j] = '\0'; //添加'\0'

printf("The string which has been connected is:\n%s",str3);

getch();
}


因为你代码能将两个字符串拼接起来,但是输出时却输出了其他的字符,所以就可以知道输出时并没有正常结束,输出字符串一般都是遇到‘\0’字符才会结束输出。而且你两个for循环判断都是以'\0'作为结束标识,所以数组最后一个'\0'字符并不会存入数组中,只需要在数组最后添加'\0'字符就能正常输出了。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: