1,字符串拼接函数strcat的原型
char *strcat( char *dest, const char *src );
参数
dest | - | 指向要后附到的空终止字节字符串的指针 |
src | - | 指向作为复制来源的空终止字节字符串的指针 |
返回值
1) 返回 dest
的副本。
2) 成功时返回零。错误时返回非零。错误时,亦写入零到 dest[0] (除非 dest
为空指针,或 destsz
为零或大于 RSIZE_MAX )。
作用详解:后附 src
所指向的空终止字节字符串的副本到 dest
所指向的空终止字节字符串的结尾。字符 src[0]
替换 dest
末尾的空终止符。产生的字节字符串是空终止的。若目标数组对于 src
和 dest
的内容以及空终止符不够大,则行为未定义。若字符串重叠,则行为未定义。若 dest
或 src
不是指向空终止字节字符串的指针,则行为未定义。
2,自己实现strcat拼接函数
#include <iostream>
using namespace std;
char* myStrcat(char* dest, const char* src) {
// 找到目标字符串的末尾
char* destEnd = dest;
while (*destEnd != '\0') {
++destEnd;
}
// 逐个复制源字符串的字符到目标字符串的末尾
while (*src != '\0') {
*destEnd = *src;
++destEnd;
++src;
}
// 添加 null 终止符
*destEnd = '\0';
return dest;
}
int main() {
const int bufferSize = 100;
char str1[bufferSize] = "Hello, ";
const char* str2 = "world!";
cout << "Before strcat: " << str1 << endl;
// 调用自己实现的strcat函数
myStrcat(str1, str2);
cout << "After strcat: " << str1 << endl;
return 0;
}
这段代码实现了一个简单的myStrcat
函数,用于将源字符串连接到目标字符串的末尾。以下是对代码的详细解析:
-
myStrcat
函数定义:char* myStrcat(char* dest, const char* src) {
- 函数名:
myStrcat
- 参数:
dest
:目标字符串的地址,这是一个字符数组,用于存储连接后的结果。src
:源字符串的地址,这是一个常量字符数组,即要连接到目标字符串的字符串。
- 函数名:
-
找到目标字符串的末尾:
char* destEnd = dest; while (*destEnd != '\0') { ++destEnd; }
- 使用
destEnd
指针遍历目标字符串,直到遇到 null 终止符,即字符串的末尾。
- 使用
-
逐个复制源字符串的字符到目标字符串的末尾:
while (*src != '\0') { *destEnd = *src; ++destEnd; ++src; }
- 使用
destEnd
指针将源字符串的字符逐个复制到目标字符串的末尾。 - 每次复制后,递增
destEnd
和src
指针,移动到下一个字符。
- 使用
-
添加 null 终止符,然后返回目标字符串的地址:
*destEnd = '\0'; return dest;
- 在连接后的字符串的末尾添加 null 终止符,确保字符串的正确结束。
- 返回目标字符串的地址,以便在调用函数的地方使用连接后的字符串。
-
main
函数中的示例:int main() { const int bufferSize = 100; char str1[bufferSize] = "Hello, "; const char* str2 = "world!"; cout << "Before strcat: " << str1 << endl; // 调用自己实现的strcat函数 myStrcat(str1, str2); cout << "After strcat: " << str1 << endl; return 0; }
- 创建一个大小为100的字符数组
str1
,并初始化为 "Hello, "。 - 创建一个指向常量字符数组的指针
str2
,指向 "world!"。 - 输出连接前的字符串。
- 调用
myStrcat
函数将str2
连接到str1
的末尾。 - 输出连接后的字符串。
- 创建一个大小为100的字符数组
最后总结:在这个例子中,myStrcat
函数接受两个参数:目标字符串dest
和源字符串src
。函数通过找到目标字符串的末尾,然后逐个复制源字符串的字符到目标字符串的末尾,最后在目标字符串的末尾添加 null 终止符。在main
函数中,我们演示了如何使用这个自己实现的myStrcat
函数。