在c中转换为小写后比较字符串

时间:2013-07-27 16:26:05

标签: c strcmp tolower

我需要比较两个字符串是否相等(不区分大小写)但我的实现在编译时返回了很多警告。

我的实施:

//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]

我该如何实现这个

2 个答案:

答案 0 :(得分:5)

tolower不会将整个字符串设为小写,只是一个字符。你需要把它放在循环中去做你正在尝试的事情。

您的系统可能有strcasecmp(3)(UNIXy)或_stricmp(窗口)功能,这对您来说更方便(尽管非标准)。

POSIX中的

strcasecmp ,所以如果您选择该路线,它可能非常便携。

答案 1 :(得分:1)

使用stricmp(wordArray[i],string)

而不是strcmp(tolower(wordArray[i]), tolower(string))