0

以下のコードでは、「見つかりません」という出力が得られます。しかし、私はそれが「見つかった」ことを期待しています。私の間違いはどこですか?

#include <stdio.h>

void compare(char *x, char *face);
int i;

int main(void){

char array[5]="Two";
char *numbers[4]={"One", "Two", "Three", "Four"};

compare(array, *numbers);

}

void compare(char *x, char *y){

for (i = 0; i < 4; i++)
{
    if (*x==y[i])
    {
        printf("\n found");
        return;
    }

}
printf("\n not found\n");
}
4

3 に答える 3

4

与えられた回答とコメントを組み合わせると、正しいコードは次のようになります。

#include <stdio.h>

void compare(char *x, char **face);  // signature changed
int i;

int main(void){

   char array[5]="Two";
   char *numbers[4]={"One", "Two", "Three", "Four"};

   compare(array, numbers);  // pass numbers, not *numbers

}

void compare(char *x, char **y) {  // signature changed, see above

    for (i = 0; i < 4; i++)  
    {
        if( strcmp( x, y[i] ) == 0 )   // use strcmp
        {
            printf("\n found");
            return;
        }

    }
    printf("\n not found\n");
}
于 2013-07-09T10:31:10.673 に答える
3
#include <stdio.h>

void compare(char *x, char **face);
int i;

int main(void){

char array[5]="Two";
char *numbers[4]={"One", "Two", "Three", "Four"};

compare(array, &numbers[0]);

}

void compare(char *x, char **y){

for (i = 0; i < 4; i++)
{
    if (*x==*y[i])
    {
        printf("\n found");
        return;
    }

}
printf("\n not found\n");
}

上記のコードは「見つかった」と表示されますが、本当に文字列を比較したい場合は、次のコードを使用してください。

void compare(char *x, char **y){

for (i = 0; i < 4; i++)
{
    if (strcmp( x,y[i] ) == 0 )
    {
        printf("\n found");
        return;
    }

}
printf("\n not found\n");
}
于 2013-07-09T10:37:46.977 に答える