将 const char * 转换为小写 char *

Converting a const char * to a lowercase char *

我是 C 的新手,我有这个函数,它应该接受一个单词并以小写形式输出。这是我到目前为止尝试过的:

char *lowercase(const char *word) {
    int length = strlen(word);
    char *lower = malloc(sizeof(word));
    lower[length] = '[=10=]';
    for(int i=0; i < length; i++) {
        lower[i] = tolower(word[i]);
    }
    return lower;
}

我输入的每个单词都会输出 ▒▒▒▒▒*。

malloc(sizeof(word)) 不正确,因为 sizeof(word)sizeof(char *) 相同,后者给出了单个指针的大小。您需要为包含 NUL 终止符的字符串分配足够的空间。所以应该是 malloc(length+1).