Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 是否可以找到大写字母并将其替换为小写字母?_C_Regex - Fatal编程技术网

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标准定义。