C语言-字符串函数的实现(三)之strcat
2021-04-20 17:49
896 查看
C语言中的字符串函数有如下这些
- 获取字符串长度 strlen
-
strcpy
-
strncpy
-
strstr
-
strerror
长度不受限制的字符串函数
strcat
老规矩,我们还是看看文档是怎样说的,如下
char * strcat ( char * destination, const char * source );Concatenate strings
连接字符串
Appends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the first character of source, and a null-character is included at the end of the new string formed by the concatenation of both in destination.
追加一个源字符串的拷贝到目的字符串中。在目的字符串中的'\0'会被源字符串的第一个字符重写,然后'\0'会在新字符串的最后面。
destination and source shall not overlap.
目的字符串和源字符串不应该重叠
可以知道
- 源字符串必须以
'\0'
结束。 - 虽然文档没说目标空间必须足够大,但是想一想还是可以知道的,即目标空间必须有足够大,能容纳下源字符串的内容,不然就追加不上了
实现
断言指针不为空是个好习惯~
char* my_strcat(char* dest, const char* src) { assert(dest != NULL); assert(src); char* rest = dest; // 1. 找到目的字符串的'\0' while (*dest != '\0') { dest++; } // 2. 追加,就是字符串拷贝了,和之前的strcpy的实现一样 while (*dest++ = *src++) { ; } return rest; } int main() { //char arr1[] = "hello"; //char arr2[] = "world"; //// 把arr2追加到arr1上 //strcat(arr1, arr2); //printf("%s\n", arr1); // 会报错,空间不够,上面的写法是错误的 // 可以给arr1的大小固定一个大的空间,比如arr1[30] char arr1[30] = "hello\0xxxxxxxxx"; char arr2[] = "world"; 56c // 把arr2追加到arr1上 //strcat(arr1, arr2); my_strcat(arr1, arr2); printf("%s\n", arr1); return 0; }
总的来说,实现的思路就是,把源字符串追加到目的字符串的后面,从而实现字符串连接。问题就在于如何找到目的字符串的尾部,很简单,就直接找
'\0',找到
'\0'就进行追加,追加就是直接复制源字符到目的空间,以此循环,复制直到遇到
'\0'就结束,这样就完成了字符串的连接了。
最后,感谢屏幕前的
靓仔花宝贵的时间阅读我这篇博客~
本人水平有限,如有错误以及不足之处,欢迎
靓仔指出。
相关文章推荐
- C语言中的字符串函数的实现,strcpy,strlen,strcat,strcmp
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- 【C语言】strlen的三种实现方法,strcmp,strcat,strcpy
- C语言模拟实现strncpy、strcat
- 【C语言】实现char * my_strcat(char * dest,char *src)函数. 返回: dest字符串的地址。 功能:将src指向的字符串追加到dest指向字符串的后面。
- C语言:字符串函数的实现
- 【c语言】my_strcat实现字符串连接
- 字符串函数的实现(StrLen、StrCpy、StrCat、StrReverse)
- strcat 连接字符串,c语言实现
- C语言实现返回字符串函数的四种方法
- 【笔试题】C语言:模拟实现strcat
- C语言-模拟实现strcat
- 用c语言实现一个strcat函数功能相同的函数
- 模拟实现不受限制的字符串函数(strcat、strcpy、strcmp)
- C语言自己实现的 整形转换成字符串函数itoa(int Number,char* Str)
- 【面试中的】C语言实现字符串函数
- C语言模拟实现strcpy、strlen、strcmp、strcat
- C语言中字符串相关函数的实现(strcat strlen strcmp strcpy memcpy)
- C语言的字符串函数strcat()和strncat()
- C语言实现将两个字符串连接起来输出(不使用 strcat 或 strncat 函数)