我正在尝试使功能toLowerCase(char* string)
,但无法使其正常工作。
这是我的代码
void toLowerCase(char* string){
int i=0;
while(*(string+i)!= '\0'){
if (*(string+i) >= 'A' && *(string+i)<='Z'){
*(string+i)= *(string+i)+32;
}
i++;
}
printf("%s",string);
}
我正在尝试通过使用*(string + i)
访问每个元素并使用ASCII转换为小写来遍历char *指针的字符串。
我是新来的,如果在抱歉之前已经回答了这个问题,但是我问是因为我找不到解决我问题的具体方法。我已经尝试过此线程中的内容:Converting Char * to Uppercase in C但这对我也不起作用。
编辑:这就是我调用函数的方式
int main() {
toLowerCase("HELLO WORLD");
return 0; }
非常感谢您的时间
出于历史原因,将C字符串文字键入char[]
,但实际上是char const[]
,不允许您对其进行修改。
幸运的是,C使您可以使用字符串文字初始化可写的char
数组,因此非常容易创建可写副本:
#include <stdio.h>
void toLowerCase(char* string)
{
int i=0;
while(*(string+i)!= '\0'){
if (*(string+i) >= 'A' && *(string+i)<='Z'){
*(string+i)= *(string+i)+32;
}
i++;
}
}
int main()
{
char string[]="HELLO WORLD";
toLowerCase(&string[0]);
puts(string);
//prints: hello world
}
https://gcc.godbolt.org/z/X4YA5B
([*(string+i)
而不是string[i]
有点不寻常,我至少用('a'-'A')
替换了魔术常数32,但被调用方的代码没有问题。]