如何进行不区分大小写的字符串比较?

3

我想进行不区分大小写的字符串比较。最简单的方法是什么?我有下面的代码可以执行区分大小写操作。

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

int main(int argc, char *argv[])
{
    char *str1 = "String";
    char *str2 = "STRING";

    if (strncmp(str1, str2, 100) != 0)
    {
        printf("=(");
        exit(EXIT_FAILURE);
    }

    return 0;
}

4
首先将字符串转换为大写字母,然后再进行比较。 - amdixon
2个回答

4
如果你可以稍微偏离严格的C标准,你可以使用strcasecmp()。它是一个POSIX API。
否则,你总是可以将字符串转换为某种情况(大写或小写),然后使用strcmp()执行正常比较。

你是指 strncasecmp 吗? - Aki Suihkonen
@AkiSuihkonen 由你决定,你(几乎)总是有长度限定版本。无论如何,我喜欢的手册应该都涵盖了这两个版本。 :-) - Sourav Ghosh
1
您的意思是“链接”(linked)... - WedaPashi
@WedaPashi 哈哈,我的错。是的,你说得对。(抱歉,编辑时间已经结束) :-) - Sourav Ghosh

2
您可以使用strcmpi()函数。
if(strcmpi(str1,str2)!=0)

仅适用于Windows系统。


2
请原谅,但这不是特定于Windows吗? - Sourav Ghosh
man strcmpi --> 没有strcmpi的手册条目 - Aki Suihkonen
@AkiSuihkonen 需要在此处进行检查。 - Sourav Ghosh
另外,您可以简单地提到包括 Shlwapi.h - WedaPashi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接