、编写子函数Strcmp(char*,char*),实现库函数strcmp(char*,char*)的功能,即比 较两个字符串的大小。
时间: 2024-12-14 16:14:50 浏览: 4
编写一个名为`Strcmp`的子函数,用于比较两个字符串,其功能类似于标准库函数`strcmp`,可以按照以下伪代码进行实现:
```c
#include <stdbool.h>
// 自定义的 strcmp-like 函数
int Strcmp(const char* str1, const char* str2) {
// 检查输入是否为空
if (str1 == NULL && str2 == NULL) {
printf("Error: Both inputs are null.\n");
return 0; // 或者其他特殊处理,例如视为相等
} else if (str1 == NULL) {
return -1; // str1 空,str2 非空,str1 应该小于 str2
} else if (str2 == NULL) {
return 1; // str1 非空,str2 空,str1 应该大于 str2
}
while (*str1 != '\0' && *str2 != '\0') { // 当遇到空字符或字符串结束时停止比较
// ASCII值比较,小则返回负数,大则返回正数,相等则继续比较下一个字符
int cmp = (*str1 - *str2);
if (cmp != 0)
return cmp;
str1++; // 移动到下一个字符
str2++;
}
// 如果两个字符串完全一样,直到结束都相等,返回0
if (*str1 == '\0' && *str2 == '\0')
return 0;
// 如果一个字符串结束了而另一个未结束,剩余部分较长的那个更长
return (*str1 == '\0') ? -1 : 1;
}
int main() {
char str1[] = "hello";
char str2[] = "world";
int result = 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 and %s are equal\n", str1, str2);
return 0;
}
阅读全文