模拟实现strcat和strncat
今天我们模拟实现一下strcat和strncat这两个函数。
首先我们先了解一下strcat这个函数,它的意思是将第二个字符串连接到第一个字符串的末尾。我们先看下函数原型: char *strcat(char *dest, char *src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。下面我们来看一下程序:
#include<stdio.h>#include<assert.h>char*my_strcat(char*dest,char*src){char*ret=dest;assert(dest);assert(src);while(*dest)//通过while循环找到第一个字符串的末尾{dest++;}while(*dest++=*src++)//通过此次while循环将第二个字符串连接到第一个字符串上{;}returnret;}intmain(){chardest[20]="hello";char*psrc="world";char*ret=my_strcat(dest,psrc);printf("%s\n",ret);return0;}
下面我们来介绍一下strncat这个函数,其实它大体和strcat这个函数差不多,但它的区别在于这个“n”。我们来看一下函数原型:char *strncat(char *dest , char *src, int n), 这个函数的功能是把src所指字符串的前n的字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。这个函数和上一个的区别就在于这个函数对第二个字符串的字符数有要求。那么下面我们看一下代码:
#include<stdio.h>#include<assert.h>void*my_strncat(char*dest,constchar*src,intn){assert(dest);assert(src);while(*dest!='\0'){dest++;}while(n--)//通过此次while循环,将第二个字符串前n的字符连接到第一个字符串上{*dest++=*src++;}*dest='\0';}intmain(){chararr1[10]="abc";chararr2[]="defgh";intnum=0;scanf("%d",&num);my_strncat(arr1,arr2,num);puts(arr1);return0;}
通过以上这两段代码,我相信大家已经能够了解strcat和strncat这两个函数的区别了。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。