我需要比较两个字符串是否相等(不区分大小写)但我的实现在编译时返回了很多警告。
我的实施:
//The word array will contain any number of strings of varying lengths
//string is the word to compare to
char **wordArray, char*string;
int i, sizeOfArray = 10
for(i = 0; i < 10; i++)
{
//Return 1 if the string is seen in the array
if(strcmp(tolower(wordArray[i]), tolower(string)) == 0)
return 1;
}
return 0;
我收到了这些警告:
warning: passing argument 1 of ‘tolower’ makes integer from pointer without a cast [enabled by default]
note: expected ‘int’ but argument is of type ‘char *’
initialization makes pointer from integer without a cast [enabled by default]
我该如何实现这个
答案 0 :(得分:5)
tolower
不会将整个字符串设为小写,只是一个字符。你需要把它放在循环中去做你正在尝试的事情。
您的系统可能有strcasecmp(3)
(UNIXy)或_stricmp
(窗口)功能,这对您来说更方便(尽管非标准)。
strcasecmp
是,所以如果您选择该路线,它可能非常便携。
答案 1 :(得分:1)
使用stricmp(wordArray[i],string)
而不是strcmp(tolower(wordArray[i]), tolower(string))