将C字符串转换为全部更低

Act*_*nis 0 c string ascii pointers tolower

我正在尝试将C-String转换为所有小写,而不使用ctype.h中的tolower.我的代码似乎不起作用:我收到运行时错误.我正在尝试做的是更改大写字母bij'a' - 'A'的ASCII值,据我所知,它应该将这些值转换为小写的值.

#include <stdio.h>
void to_lower(char* k) {
    char * temp = k;
    while(*temp != 0) {
        if(*temp > 'A' && *temp < 'Z') {
            *temp += ('a' - 'A');
        }
        temp++;
    }
}

int main() {
    char * s = "ThiS Is AN eXaMpLe";
    to_lower(s);
    printf("%s",s);
}
Run Code Online (Sandbox Code Playgroud)

tux*_*ux3 9

两个错误.

此代码不会将A和Z转换为小写:

if(*temp > 'A' && *temp < 'Z') {
Run Code Online (Sandbox Code Playgroud)

请改用> =和<=.

尝试修改字符串文字是不合法的!数组可以修改,字符串文字不能修改.

改变这种状况char * s = "ThiS Is AN eXaMpLe";,以char s[] = "ThiS Is AN eXaMpLe";