Nie mogę porównać zmiennej napisowej.

0

Dzień dobry, mam taki kod:

char plec[50];
printf("Podaj plec(kobieta, mezczyzna): \n");
scanf("%s", plec);
if (plec == "kobieta")
{
    printf("Dobrym prezentem bedzie lalka.");
}

Program się odpala, wpisuję tą płeć, ale nie wchodzi do tej instrukcji warunkowej. Proszę o podpowiedź co robię źle.

3

W C do porównwania stringów służy strcmp/strncmp

0

W C, stringi to tablice znakowe, a tablice to (z grubsza) wskaźniki na pierwszy element. Tak więc porównując CStringi przez ==, porównujesz to, czy zaczynają się w tym samym miejscu w pamięci, a to nie jest tożsame z przechowywaniem tego samego napisu.

0
Althorion napisał(a):

W C, stringi to tablice znakowe, a tablice to (z grubsza) wskaźniki na pierwszy element. Tak więc porównując CStringi przez ==, porównujesz to, czy zaczynają się w tym samym miejscu w pamięci, a to nie jest tożsame z przechowywaniem tego samego napisu.

Czyli jakiego operatora muszę użyć zamiast '=='?

1

KQ, już Ci odpowiedział:

    int rc = strcmp(lhs, rhs);
    if(rc == 0)
        printf("[%s] equals [%s]\n", lhs, rhs);
    else if(rc < 0)
        printf("[%s] precedes [%s]\n", lhs, rhs);
    else if(rc > 0)
        printf("[%s] follows [%s]\n", lhs, rhs);
int rc = strcmp(lhs, rhs);

lhs - pierwszy tekst,
rhs - drugi tekst

strcmp(lhs, rhs); porownujesz i w zmiennej rc masz wynik:
jezeli rc ==0 wtedy znaczy ze sa rowne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1