C语言按照字典顺序比较两个字符串s1s2的大小若相等返回0若s1>,不能使用strcmp
时间: 2024-11-27 18:09:44 浏览: 39
在C语言中,如果你不能直接使用`strcmp()`函数来比较两个字符串`s1`和`s2`的字典顺序,你可以手动遍历这两个字符串,逐字符比较。以下是基本的步骤:
1. 首先确定两字符串长度是否相等,如果不等,则直接返回长度较大的那个字符串的长度作为结果,因为字符串越长则越大。
```c
int compare_length(const char* s1, const char* s2) {
int len1 = strlen(s1);
int len2 = strlen(s2);
if (len1 != len2)
return len1 > len2 ? 1 : -1;
}
```
2. 然后,从第一个字符开始,逐个比较每个字符的ASCII值。如果发现有字符的ASCII值不同,返回对应的差值(正数表示s1较大,负数表示s2较大,零表示相等)。
```c
int compare_chars(const char* s1, const char* s2, int len) {
for (int i = 0; i < len; ++i) {
if (s1[i] > s2[i])
return 1;
else if (s1[i] < s2[i])
return -1;
}
// 如果遍历完都相等,返回0
return 0;
}
// 综合两个部分的函数
int manual_compare(const char* s1, const char* s2) {
int len_diff = compare_length(s1, s2);
if (len_diff != 0)
return len_diff;
return compare_chars(s1, s2, strlen(s1));
}
```
阅读全文
相关推荐


















