C 是否可以找到大写字母并将其替换为小写字母?
如果C 是否可以找到大写字母并将其替换为小写字母?,c,regex,C,Regex,如果my_array[50]中有随机的大写字母,有没有办法找到它们并将它们切换为小写字母?我真的在寻找一种独立于实现的方法,因为它将是跨平台的。该代码也将用于其他语言。C提供了一个tolower函数,可将大写字母转换为小写字母,并保留其他字符不变。它受当前语言环境的影响(它将使用不同的字母表,具体取决于您使用setlocale函数设置的语言环境)。它应该与无符号字符字符一起使用 #include <ctype.h> #include <stdlib.h> /* Giv
my_array[50]
中有随机的大写字母,有没有办法找到它们并将它们切换为小写字母?我真的在寻找一种独立于实现的方法,因为它将是跨平台的。该代码也将用于其他语言。C提供了一个tolower
函数,可将大写字母转换为小写字母,并保留其他字符不变。它受当前语言环境的影响(它将使用不同的字母表,具体取决于您使用setlocale
函数设置的语言环境)。它应该与无符号字符
字符一起使用
#include <ctype.h>
#include <stdlib.h>
/* Given length characters starting at p,
convert uppercase letters to lowercase.
*/
void ToLower(size_t length, unsigned char *p)
{
for (size_t i = 0; i < length; ++i)
p[i] = tolower(p[i]);
}
#包括
#包括
/*给定从p开始的长度字符,
将大写字母转换为小写字母。
*/
void ToLower(大小\u t长度,无符号字符*p)
{
对于(尺寸i=0;i
(对于“宽字符”,函数
towctrans
提供了类似的操作。使用起来更为复杂。)“如果我的数组[50]中包含随机大写字母”,请显示相应的代码。定义数组并用示例数据填充它。请解释“查找元素id”。您的意思是搜索具有特定属性的角色的索引吗?我知道所有字符都是大写的,那么这是什么属性呢?跨平台和regex看起来不真实,你是什么意思?总而言之,我真的不明白你在问什么。字符串可以包含什么?只有ASCII字母?是否有任何Unicode编码为UTF-8?还有什么?基本上只有数字、字母和简单字符,没有什么比UTF-8A在数组元素上的简单循环更疯狂的了,使用tolower()
函数就可以了。如果您想让它与其他(非编程)语言一起使用,请查找locale的用法。我认为这会捕获所有字符,它实际上不会检查其是否在A-Z范围内。如果它不是字母,它将返回原始值。无需在调用者中添加检查。tolower()
不仅适用于无符号字符
。它的参数和返回值的类型为int
@Peter:参数的类型为int
并不意味着行为是为任何int
类型的值定义的。根据C 2018 7.4 1:“在所有情况下,参数均为int
,其值应表示为unsigned char
,或应等于宏EOF
的值。如果参数有任何其他值,则行为未定义。”如果传递tolower
除EOF
之外的负值,该行为不由C标准定义。