#include<stdio.h>
void mystract(char *dest,char *source)
{
char *p1;
p1=dest;
while(*p1!='\0')
{p1++;}
while(*source!='\0')
{
*p1=*source;p1++;
}
}
main()
{
char *dest,*source,str1[6],str2[6];
dest=str1;
source=str2;
gets(str1);
gets(str2);
mystract(str1,str2);
printf("%s",str1);
}
代码来自网络:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[30];
char s2[10];
int len1,len2;//字符串1、2的长度
int i;
printf("请输入字符串1:\n");
gets(s1);
printf("请输入字符串2:\n");
gets(s2);
len1=strlen(s1);
len2=strlen(s2);
for(i=0;i<=len2;i++)
s1[len1+i]=s2[i];
printf("%s\n",s1);
}追问
可以帮我看看错在哪吗
本回答被网友采纳你的代码把函数中的*p1=*source;p1++; 改成*p1++=*source++;就可以了,source没增值。
while(*source!='\0')这种写法没有复制'\0',所以得在函数最后一个}前加*p1='\0';。
主函数中定义数组目标数组应长一些,不然连接后就溢出了。
最好不用gets函数,它不能控制边界,出了运行错误不好查找。
改如下——
代码文本:
#include "stdio.h"
void mystract(char *dest,const char *source){
while(*dest)
dest++;
while(*dest++=*source++);
}
int main(int argc,char *argv[]){
char str1[60],str2[10];
gets(str1);
gets(str2);
mystract(str1,str2);
printf("%s\n",str1);
return 0;
}