编写一个mystrcat函数实现字符串连接函数strcat的功能?

#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);
}

添加两句,参见下图中画红线的部分:

修改后的程序

有什么问题请留言。

追问

为啥要加那两句啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-11
这里需要注意字符串的操作,简单提一句,关于scanf与gets函数输入字符串,scanf在接收字符串时遇到空格字符就会停止,gets函数则可以接收任何字符;puts与printf函数在字符串输出没有太大差别;
代码来自网络:
#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);
}追问

可以帮我看看错在哪吗

本回答被网友采纳
第2个回答  2019-12-13

    你的代码把函数中的*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;

}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网