gpt4 book ai didi

c - 如何在不区分大小写的字符串中查找单词?

转载 作者:行者123 更新时间:2023-12-04 13:30:33 24 4
gpt4 key购买 nike

有没有办法以不区分大小写的方式在字符串中查找单词?
我想在 C 程序中找到“Word”或“WOrd”或“word”等。
在发布这个问题之前,我看到了一些解决方案,但它们不再起作用,或者强制我触摸原始字符串以使其全部大写,这不是我想要的。有什么建议吗?

最佳答案

Is there a way to compare a string witihn a word with case insensitive?


要比较不区分大小写的字符串,请使用 tolower() 折叠值。或 toupper() .
#include <ctype.h>

int compare(const char *s1, const char *s2) {
const unsigned char *u1 = (const unsigned char *) s1; // Use unsigned char for use with `to....()`
const unsigned char *u2 = (const unsigned char *) s2;

while (*u1 && toupper(*u1) == toupper(*u2)) {
u1++;
u2++;
}
int ch1 = toupper(*u1);
int ch2 = toupper(*u2);
return (ch1 > ch2) - (ch1 < ch2);
}

要处理通用 ASCII 范围之外的字母,这些字母可能具有非一对一的上/下映射,请转换两次:
while (*u1 && tolower(toupper(*u1)) == tolower(toupper(*u2))) {

使用 tolower()toupper()或以上任一顺序在寻找相等时没有区别,但可以产生顺序差异。例如是 _之前或之后 A-Z ?

关于c - 如何在不区分大小写的字符串中查找单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65347233/

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