0

这段代码有什么问题?我不知道发生了什么事。

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    char *s = "OKAY";

    for (int i = 0; i < 4; i++)
        tolower(s[i]);

    printf("\n%s\n", s);

    return 0;
}

输出:

OKAY
4

3 回答 3

4

tolower函数返回与输入字符等效的小写字母。它不会就地修改它。

于 2014-05-28T17:37:43.030 回答
4

您需要分配 to 的返回值,tolower但这s将调用未定义的行为,因为字符串文字是不可修改的,因为它们被放置在内存的只读部分。你不能修改它。试试这个

char s[]= "OKAY";
for (int i = 0; i < 4; i++)
    s[i] = tolower(s[i]);
于 2014-05-28T17:38:09.427 回答
1
char s[] = "OKAY";

for (int i = 0; i < 4; i++)
    s[i]=tolower(s[i]);
于 2014-05-28T17:38:49.617 回答