编写一个函数,实现求一个字符串的长度不得使用库函数strlen(),编写一个函数,实现字符串的拷贝不得使用库函数strcpy(),编写一个函数,实现两个字符串的连接,不得使用库函数strcat(),编写一个函数实现两个字符串的比较,不得使用库函数strcmp()。用c语言编写
时间: 2024-12-30 14:41:03 浏览: 8
在C语言中,可以分别手动编写四个函数来完成这些任务:
1. **计算字符串长度(无 strlen() 函数)**:
```c
#include <stdio.h>
#include <string.h>
size_t string_length(char* str) {
if (str == NULL) return 0;
size_t len = 0;
while (*str != '\0') {
++len;
str++;
}
return len;
}
```
2. **字符串拷贝(无 strcpy() 函数)**:
```c
void string_copy(char* dest, const char* src) {
if (dest == NULL || src == NULL) return;
while (*src) {
*dest++ = *src++;
}
*dest = '\0';
}
```
3. **字符串连接(无 strcat() 函数)**:
```c
char* string_concat(char* result, const char* str1, const char* str2) {
if (result == NULL || str1 == NULL || str2 == NULL) return NULL;
size_t len1 = string_length(str1);
size_t len2 = string_length(str2);
// 确保有足够的空间
result[len1] = '\0';
result += len1 + 1;
for (size_t i = 0; i < len2; ++i) {
result[i + len1] = str2[i];
}
result[len1 + len2] = '\0';
return result;
}
```
4. **字符串比较(无 strcmp() 函数)**:
```c
int string_compare(const char* str1, const char* str2) {
while (*str1 && *str2 && *str1 == *str2) {
str1++;
str2++;
}
if (*str1 == '\0') return 0; // str1 更长
else if (*str2 == '\0') return -1; // str2 更长
else return *str1 - *str2; // 字符不同
}
```
请注意,以上代码没有处理异常情况,例如输入空指针。在实际应用中,你需要添加适当的错误检查。
阅读全文