我需要比较两个字符串的相等性(不区分大小写)但我的实现在编译时返回了很多警告.
我的实施:
//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;
Run Code Online (Sandbox Code Playgroud)
我收到这些警告:
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]
Run Code Online (Sandbox Code Playgroud)
我该如何实现呢
tolower不会使整个字符串小写,只是一个字符.你需要把它放在一个循环中来做你正在尝试的事情.
您的系统可能具有strcasecmp(3)(UNIXy)或_stricmp(Windows)功能,这对您来说更方便(尽管非标准).
strcasecmp 是在POSIX,所以很可能是相当便携的,你应该选择这条路线.