function tolower()不转换

时间:2014-05-28 17:35:21

标签: c tolower

这段代码有什么问题?我无法找到正在发生的事情。

#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

3 个答案:

答案 0 :(得分:4)

tolower函数返回输入字符的小写等效项。它不会对其进行修改。

答案 1 :(得分:4)

您需要将tolower的返回值分配给s,但这将调用未定义的行为,因为字符串文字是不可修改的,因为它们位于内存的只读部分。你无法修改它。试试这个

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

答案 2 :(得分:1)

char s[] = "OKAY";

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