将 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)
.
我是 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)
.