c判断两个字符串是否相等。要求大小写字母不敏感,即同一个字母的大写和小写视作相同字符。 Input 输入两行,每行是一个字符串,长度不超过100字符。 Output 若两字符串相等,输出“yes”,否则输出“no”。 Sample Input abCdeF aBcdEF Sample Output yes
时间: 2025-03-22 17:16:30 浏览: 44
### 实现大小写不敏感的字符串比较函数
为了实现一个忽略大小写的字符串比较函数,可以基于标准库中的 `tolower` 函数来转换字符为小写字母后再进行比较。以下是完整的解决方案:
#### 方法描述
在 C 语言中,可以通过遍历两个字符串的每一个字符并将其统一转为小写来进行逐个对比[^1]。当遇到不同字符时,按照其 ASCII 值计算差值;如果其中一个字符串提前结束(即遇到了 `\0`),则可以根据长度判断哪个更短。
#### 完整代码示例
以下是一个实现了大小写不敏感字符串比较功能的函数定义及其调用方式:
```c
#include <stdio.h>
#include <ctype.h> // 提供 tolower() 函数
#include <string.h> // 提供 strlen()
// 大小写无关的字符串比较函数
int stricmp(const char *str1, const char *str2) {
while (*str1 && *str2) { // 当前指针均未到达 '\0'
if (tolower((unsigned char)*str1) != tolower((unsigned char)*str2)) {
return tolower((unsigned char)*str1) - tolower((unsigned char)*str2);
}
++str1;
++str2;
}
// 如果有一个串已经到头,则返回剩余部分的结果
return *(const unsigned char *)str1 - *(const unsigned char *)str2;
}
// 测试该函数
int main(void) {
const char string1[] = "Hello";
const char string2[] = "hello";
int result = stricmp(string1, string2);
if (result == 0) {
printf("Strings are equal.\n");
} else if (result < 0) {
printf("\"%s\" is less than \"%s\"\n", string1, string2);
} else {
printf("\"%s\" is greater than \"%s\"\n", string1, string2);
}
return 0;
}
```
上述代码通过循环逐一读取两字符串对应位置上的字符,并利用 `tolower()` 将它们转化为小写形式再做比较[^3]。最终依据差异决定两者关系或者判定完全一致的情况。
#### 关键点解析
- **tolower 的作用**:此函数会把大写字母映射成相应的小写字母,而非字母保持不变[^4]。
- **边界条件处理**:考虑到可能有较短的一方先抵达终止符 (`\0`) ,因此需额外检查这种情况下的相对顺序[^2]。
---
###
阅读全文
相关推荐

















