0

2 つの文字列が等しいかどうか (大文字と小文字を区別しない) を比較する必要がありますが、私の実装ではコンパイル時に多くの警告が返されます。

私の実装:

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

どうすればこれを実装できますか

4

2 に答える 2

5

tolower文字列全体を小文字にするのではなく、1 文字だけを小文字にします。試していることを実行するには、ループに入れる必要があります。

お使いのシステムにはstrcasecmp(3)(UNIXy) または_stricmp(windows) の機能が備わっている場合があり、そのほうが便利です (標準的ではありませんが)。

strcasecmp POSIX にあるため、そのルートを選択すると、移植性が高くなる可能性があります。

于 2013-07-27T16:29:25.203 に答える
1

使用するstricmp(wordArray[i],string)

それ以外のstrcmp(tolower(wordArray[i]), tolower(string))

于 2013-07-27T16:32:50.287 に答える