自己编写程序,实现函数strlen(),strcpy(),strcmp()功能。 要求:不得调用string.h相应函数。
时间: 2024-10-19 18:13:50 浏览: 22
在自定义函数实现字符串操作时,我们通常会手动遍历字符数组来计算长度、复制字符串和比较两个字符串。下面是一个简单的C语言示例,演示如何编写不依赖于`string.h`库的strlen(), strcpy(), strcmp()函数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义字符串长度函数
size_t my_strlen(char* str) {
size_t len = 0;
while (str[len] != '\0') { // 遍历直到遇到'\0'
len++;
}
return len;
}
// 定义字符串复制函数
char* my_strcpy(char* dest, const char* src) {
if (dest == NULL || src == NULL) {
return NULL; // 错误处理
}
while (*src != '\0') { // 拷贝源字符串的内容到目标
*dest++ = *src++; // 目标地址加一,源地址加一
}
*dest = '\0'; // 结束符
return dest;
}
// 定义字符串比较函数
int my_strcmp(const char* str1, const char* str2) {
while (*str1 && *str2 && *str1 == *str2) { // 当两者都还有字符且相等时继续比较
str1++, str2++; // 移动指针到下一个字符
}
if (*str1 == '\0') { // 如果str1先结束,则str1小于str2
return -1;
} else if (*str2 == '\0') { // 如果str2先结束,则str2大于str1
return 1;
} else { // 否则,根据最后一个字符判断大小
return *str1 - *str2;
}
}
int main() {
char str1[] = "Hello";
char str2[] = "World";
printf("Length of %s is %zu\n", str1, my_strlen(str1));
char* copied = my_strcpy(str1 + 5, str2); // 将"Hello"的第五个字符后的部分复制到原位置
printf("%s copied from %s to %s\n", copied, str1, copied);
int result = my_strcmp(str1, str2);
if (result > 0) {
printf("%s is greater than %s\n", str1, str2);
} else if (result < 0) {
printf("%s is less than %s\n", str1, str2);
} else {
printf("%s is equal to %s\n", str1, str2);
}
return 0;
}
```
这个示例中,`my_strlen`, `my_strcpy`, 和 `my_strcmp` 函数都是手动实现的简单版本,它们没有考虑所有边缘情况和错误处理,但在基本功能上能工作。
阅读全文