这段代码有什么问题?我不知道发生了什么事。
#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
该tolower
函数返回与输入字符等效的小写字母。它不会就地修改它。
您需要分配 to 的返回值,tolower
但这s
将调用未定义的行为,因为字符串文字是不可修改的,因为它们被放置在内存的只读部分。你不能修改它。试试这个
char s[]= "OKAY";
for (int i = 0; i < 4; i++)
s[i] = tolower(s[i]);
char s[] = "OKAY";
for (int i = 0; i < 4; i++)
s[i]=tolower(s[i]);