您当前的位置:首页 > 计算机 > 编程开发 > C语言

编写函数mystrcat,实现和strcat完全相同的功能

时间:01-03来源:作者:点击数:

系统函数strcat的功能是把两个字符串连接成一个字符串,使用这一函数时要求头文件包含:#include <string.h>。

函数调用形式是strcat(字符串1,字符串2),函数执行后把字符串2的内容连接到字符串1的后面。问题中可以先计算字符串1的长度,从字符串1的长度+1位置(也就是字符串1结束符的位置)开始,利用循环依次将字符串2的所有字符拷贝到字符串1。遍历字符串元素时,可以利用字符串结束符结束循环。

注意:拷贝过程结束后,要确保连接后的字符串有字符串结束符,否则会产生错误。

数据要求

问题中的常量:#define MAXNUM 200 /*定义数组的最大长度*/

问题的输入:char str1 /*字符串1,初始的字符串*/;char str2 /*字符串2*,要连接的字符串/

问题的输出:char str1 /*字符串1,最终输出的字符串*/

初始算法

1.初始化字符串1和字符串2;

2.调用函数mystrcat把字符串2连接到字符串1的后面;

3.输出字符串1;

4.结束。

算法细化

步骤2的细化

    2.1 定义变量i,j

    2.2 利用循环i找出字符串str1的长度

         2.2.1 不是结束标志,i++

         2.2.2 是结束标志,退出循环

    2.3 利用循环j把字符串str2的内容接到str1的后面

         2.3.1不是结束标志,j++

         2.3.2是结束标志,退出循环

    2.4 给str1后面赋值'\0'

    2.5 函数结束

程序代码如下:

#include “stdio.h”
#define MAXNUM 200
void mystrcat(char str1[],char str2[])
{
int i,j;
/*计算str1的长度,循环结束后i的值等于str1的长度加1*/
for(i=0; str1 [i]!='\0';i++);
/*在str1后添加str2的每个字符*/
for(j=0; str2 [j]!='\0';j++)
  str1 [i+j]= str2 [j];
/*最后一定要加上字符串结束符*/
str1 [i+j]='\0';
}
main()
{
/*定义两个字符数组str1和str2,注意str1要能容纳连接后的字符串*/
char str1[MAXNUM],str2[MAXNUM];
/*输入str1和str2*/
printf("\nPlease input str1:\n");
gets(str1);
printf("Please input str2:\n");
gets(str2);
/*调用函数进行处理*/
mystrcat(str1,str2);
/*打印输出结果*/
printf("Catenated str1=%s",str1);
}

分析

结果为:
         Please input str1:
         hello!
         Please input str2:
         kitty
         Catenated str1=hello!kitty

函数mystrcat也可以使用指针方式实现,main函数不用改动,代码如下:

void mystrcat(char *pstr1,char *pstr2)
{
/*将指针pstr1拨到字符串末尾*/
while(*pstr1) pstr1++;
/*在pstr2后添加pstr2的每个字符,注意循环最后一次拷贝了'\0'*/
while(*pstr1++=* pstr2++);
}

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门