-6ren">
gpt4 book ai didi

c - strcmp 在比较字符串时如何工作?

转载 作者:太空宇宙 更新时间:2023-11-03 23:24:56 27 4
gpt4 key购买 nike

我正在实现字典排序,我的教授告诉我们在实现中使用 strcmp。问题是,strcmp 在比较字符串方面非常困惑。

例如,这里会产生错误:

    if (strcmp("What", "am") > 0) {
printf("true\n");
} else {
printf("false\n");
}

按字典顺序,“What”不是应该大于“am”吗?手册页在解释函数如何确定一个字符串是大于还是小于另一个方面非常简洁。这里有一些问题,但我仍然不能根据这些解释确定这个结果。

最佳答案

问题在于 strcmp 进行二进制比较。这个事实使函数区分大小写! “W”的ASCII码比“a”的ASCII码小。

解决问题的方法是比较大小写相同的文本字符串。

获得它的一个简单方法是:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

char* stoupper( char* s )
{
char* p = s;
while (*p) {
*p= toupper( *p ); p++
};
return s;
}

int main(void)
{
char a[10];
char b[10];

strcpy(a,"What");
strcpy(b,"am");

if (strcmp(stoupper(a), stoupper(b)) > 0) {
printf("true\n");
} else {
printf("false\n");
}

}

记住 stoupper 函数的使用明确地修改了字符串中的文本!

关于c - strcmp 在比较字符串时如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29586326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com