【发布时间】:2021-11-09 04:53:46
【问题描述】:
我对 C 语言很陌生,我有这个函数,它应该接受一个单词并以小写形式输出。这是我迄今为止尝试过的:
char *lowercase(const char *word) {
int length = strlen(word);
char *lower = malloc(sizeof(word));
lower[length] = '\0';
for(int i=0; i < length; i++) {
lower[i] = tolower(word[i]);
}
return lower;
}
这会为我输入的每个单词输出 ▒▒▒▒▒*。
【问题讨论】:
-
malloc(length+1) -
您需要多一个字节来存储 NULL 字符。
-
另外
length应该是size_t。 -
@Someone_who_likes_SE 不,这还不够。
sizeof完全错误,因此仅添加一个不会有帮助。 -
您需要使用
malloc(length + 1)。您不能为此使用sizeof,因为您最终会得到单个指针的大小而不是字符数。您还应该将size_t用于length,而不是int。