[10] 编写函数mystrcmp实现将两个字符串的比较。并在主函数中调用该函数实现两个字符串的比较。
时间: 2024-12-14 22:25:21 浏览: 4
要编写一个名为`mystrcmp`的函数来实现两个字符串的比较,你可以使用标准的字符逐个比较的方法。这里我们将不考虑大小写,如果想保留大小写差异,只需去掉相应的转换步骤即可。以下是一个简单的`mystrcmp`函数的实现:
```c
#include <stdio.h>
#include <string.h>
// 自定义字符串比较函数(忽略大小写)
int mystrcmp(const char *str1, const char *str2) {
while (*str1 != '\0' && *str2 != '\0') { // 检查字符串是否结束
if (tolower(*str1) != tolower(*str2)) { // 将字符转为小写进行比较
return *str1 - *str2; // 如果不相等,返回它们的差值(非零表示不相等)
}
str1++;
str2++;
}
// 如果一个是另一个的前缀,返回正负号
if (*str1 == '\0' && *str2 != '\0') {
return -1;
} else if (*str1 != '\0' && *str2 == '\0') {
return 1;
} else {
return 0; // 如果长度相同且所有字符都匹配,返回0表示相等
}
}
int main() {
const char *str1 = "Hello";
const char *str2 = "hello";
int result = mystrcmp(str1, str2);
if (result > 0) {
printf("'%s' is lexicographically greater than '%s'\n", str1, str2);
} else if (result < 0) {
printf("'%s' is lexicographically less than '%s'\n", str1, str2);
} else {
printf("'%s' and '%s' are equal\n", str1, str2);
}
return 0;
}
```
在这个例子中,`mystrcmp`函数首先检查两个字符串中的字符是否相等,如果不等则返回差值;如果遍历完字符串还没找到不相等的字符,则根据剩余的字符长度判断哪个是前缀并返回相应结果。
阅读全文