【发布时间】:2015-06-21 01:32:03
【问题描述】:
我有一个字符串数组,我正在尝试将所有字符转换为小写。
void make_lower(char **array)
{
int i = 0;
while (array[i] != NULL){
array[i] = tolower(array[i]);
i++;
}
}
我知道 tolower 函数一次读取一个字符,而不是一次读取整个字符串。这就是为什么我认为我必须使用这样的循环,但我仍然收到警告并且该功能不起作用:
passing argument 1 of ‘tolower’ makes integer from pointer without
a cast [-Werror]
note: expected ‘int’ but argument is of type ‘char *’
assignment makes pointer from integer without a cast [-Werror]
非常感谢您的帮助。
【问题讨论】:
-
使用双循环。一个迭代字符串的数量,另一个迭代每个字符串中的每个字符。
array的类型为char**。tolower需要int类型的参数,但您给出array[i]类型为char* -
因为
array[i]是字符串,需要再循环一次。 -
指向指针的指针不是数组。它指向什么,一个指针数组?
标签: c arrays string pointers tolower