C语言模拟实现字符串函数
时间: 2025-05-07 17:13:03 浏览: 29
### 手动实现 `strcpy`、`strcat` 和 `strlen`
以下是基于提供的引用内容和专业知识,手动实现 `strcpy`、`strcat` 和 `strlen` 的示例代码。
#### 1. 实现 `strlen()` 函数
`strlen()` 是用于计算字符串长度的标准库函数。可以通过遍历字符直到遇到 `\0` 来实现该功能[^5]:
```c
size_t my_strlen(const char *str) {
const char *ptr = str;
while (*ptr != '\0') {
ptr++;
}
return (size_t)(ptr - str);
}
```
上述代码通过指针移动来统计字符串中的有效字符数量,最终返回字符串的长度。
---
#### 2. 实现 `strcpy()` 函数
`strcpy()` 将源字符串复制到目标缓冲区中。需要注意的是,目标缓冲区必须有足够的空间容纳整个源字符串及其终止符 `\0`[^4]:
```c
char *my_strcpy(char *dest, const char *src) {
char *temp = dest;
while ((*temp++ = *src++) != '\0');
return dest;
}
```
此版本利用循环逐字节复制数据,并确保最后加上字符串结束标志 `\0`。
---
#### 3. 实现 `strcat()` 函数
`strcat()` 把第二个字符串追加到第一个字符串后面,同样需要保证目标缓冲区有足够空间存储两个字符串的内容以及额外的一个 `\0`:
```c
char *my_strcat(char *dest, const char *src) {
char *temp = dest;
// 移动到dest的末尾
while (*temp != '\0') temp++;
// 开始拼接src
while ((*temp++ = *src++) != '\0');
return dest;
}
```
这里先定位到目标串的末端再执行连接操作,从而完成两段文字的连续放置。
---
### 注意事项
当尝试调用像 `strcpy` 这样的函数时,务必确认目的地址具有适当大小以防止越界写入引发未定义行为,正如在给定例子中展示那样可能导致程序崩溃或者异常结果[^3]。
```c
#include <stdio.h>
int main() {
char src[] = "world";
char dst[50] = "hello ";
printf("Before strcat: %s\n", dst);
my_strcat(dst, src);
printf("After strcat : %s\n", dst);
return 0;
}
```
以上展示了如何安全地应用自定义版 `strcat` 方法来进行字符串组合。
阅读全文
相关推荐



















