Vergelijking van twee variabelen in C

Ik heb problemen bij het vergelijken van twee variabelen, ik hoop dat iemand kan helpen.

Eigenlijk wat ik doe is:

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

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

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

Ik heb M1 op de vraag gezet omdat het in het .bin-bestand bestaat

functieaanroep:

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;
}

Mijn doel is om 1 te retourneren wanneer ik M1 stop.

struct item:

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

Het probleem is hier: (* k) .id == p) , de waarden zijn nooit hetzelfde en ik ben er 100% zeker van dat M1 in het .bin-bestand bestaat.

2
(1) while ((fread (k, 1, sizeof (item), f))!! = NULL) { fread() retourneert geen aanwijzer. (2) if ((* k) .id == p) {. De afkorting hiervoor is als (k-> id == p) , en (3) p is een aanwijzer, dus je hebt strcmp ()/memcmp() nodig, zoals anderen al hebben gezegd.
toegevoegd de auteur wildplasser, de bron

2 antwoord

U vergelijkt pointers wanneer u strings moet vergelijken.

Vervang als ((* k) .id == p) met if (strcmp ((* k) .id, p) == 0) om de strings te vergelijken.

1
toegevoegd
Oh je hebt zo gelijk !!! Dank u zeer.
toegevoegd de auteur DmitryK, de bron
if((*k).id==p)

Je vergelijkt alleen twee wijzers, gebruik de functie strcmp om twee strings te vergelijken.

0
toegevoegd
ye, thx !!! heb het opgelost
toegevoegd de auteur DmitryK, de bron