一、strcat函数的使用与模拟实现
- 源字符串必须以 '\0' 结束。
- 目标字符串中也得有 \0 ,否则没办法知道追加从哪里开始。
- 目标空间必须有足够的大,能容纳下源字符串的内容。
- 目标空间必须可修改。
- 字符串自己给自己追加,不一定能实现。
strcat函数的使用:
#include<stdio.h> #include<string.h> int main() { char str1[] = "hello world"; char str2[20]= "xxxxxxxx"; strcat(str2, str1); printf("%s", str2); return 0; }
模拟实现strcat函数:
char *my_strcat(char *dest, const char*src) { char *ret = dest; assert(dest != NULL); assert(src != NULL); while(*dest) { dest++; } while((*dest++ = *src++)) { ; } return ret; }
二、strncat函数的使用与模拟实现
- 将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加一个 \0 字 符。
- 如果source 指向的字符串的长度小于num的时候,只会将字符串中到 \0 的内容追加到destination指向的字符串末尾。
strncat函数的使用:
#include<stdio.h> #include<string.h> int main() { char str1[] = "hello world"; char str2[20]= "xxxxxxxx"; strncat(str2, str1,4); printf("%s", str2); return 0; }
strncat函数的模拟使用:
char *my_strncat(char *dest, const char *src, size_t n) { // 找到目标字符串的末尾 char *dest_ned = dest; while (*dest_end != '\0') { ++dest_end; } // 将源字符串的前n个字符追加到目标字符串的末尾 for (i = 0; i < n && src[i] != '\0'; ++i) { *dest_end++ = src[i]; } // 添加字符串结束符 *dest_end = '\0'; return dest; }