-2

2 つの変数を比較するのに問題があります。誰かが助けてくれることを願っています。

基本的に私がしていることは次のとおりです。

printf("\n\n +* Introduza o %d Prato:", i + 1);

scanf("%s", &pratos_novo->prato);

ver=verifica_prato(pratos_novo->prato);
  if(ver == 1)
/*PROCESS*/

M1は.binファイルに存在するため、尋ねられたときに入れました

関数呼び出し:

int verifica_prato(char* p) {

    k = (struct item*) malloc(sizeof(item));
        while((fread(k, 1, sizeof(item), f)) != NULL) {
            if((*k).id == p){
                fclose(f);
                return 1;
            }
        }
    fclose(f);
    return 0;
}

私の目標は、M1 を入れたときに 1 を返すことです。

構造体アイテム:

struct item{
    char id[5];
    int ing[10];
    float qtd[10];
};

問題はここにあります: (*k).id==p)、値は決して同じではなく、M1 が .bin ファイルに存在することを 100% 確信しています。

4

2 に答える 2

1

文字列を比較する必要がある場合、ポインターを比較しています。

文字列を比較するには、にif((*k).id==p)置き換えます。if( strcmp( (*k).id, p) == 0 )

于 2012-06-24T01:12:56.423 に答える
0
if((*k).id==p)

2 つのポインターのみを比較していstrcmpます。関数を使用して 2 つの文字列を比較します。

于 2012-06-24T01:12:41.683 に答える