常量字符串的不区分大小写的比较

标签 c string case-insensitive

我正在尝试使用此函数比较两个字符串,不区分大小写。

int strcasecmp(const char *x1, const char *x2);

我的副本是正确的,但是区分大小写的部分给我带来了一些麻烦,因为 const 是一个常量,因此是只读的,导致这些失败:

*x1 = (tolower(*x1)); // toupper would suffice as well, I just chose tolower
*x2 = (tolower(*x2)); // likewise here

两个字符都必须保持const,否则我认为这会起作用... 所以我的问题是:有没有办法在保持 char-strings const 的同时忽略大写?

最佳答案

你可以使用一个临时的 char 变量:

char c1 = tolower(*x1);
char c2 = tolower(*x2);

if (c1 == c2)
 ...

关于常量字符串的不区分大小写的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11405705/

相关文章:

更改字符串以指向函数中的下一个字符

c# - 获取字符串的子串

python - 不区分大小写的替换

java - 忽略回文检查器的大小写

c - 我尝试实现 LIFO 和递归来反转 char 数组,但它无法正常工作

将已弃用的 void _init() 更改为使用 __attribute((constructor)) 时出现编译器错误

c - 如果变量是 char 或 int,算术运算会有所不同

c - 您如何解释这段代码输出中的差异?

PHP将对象转换为字符串

regex - Marpa 中不区分大小写的匹配