» Poradna » Programy

Textové řetězce v jazyku C

 |   | 

Dobrý den, kde mám chybu? Chci, aby se po zadání správného "hesla" vytiskl "libovolný text", ale ačkoliv to kompilátor projde, tak to nedělá, co má...

#include
#include

int main(int argc, char *argv[])
{
char jmeno[15];
scanf("%s",jmeno);
if (jmeno == "Heslo") printf("Heslo je OK!");
system("PAUSE");
return 0;
}

Děkuji předem!

Odpovědi na otázku

 |   | 

Prosím, prosím, nenajde se zde nikdo, kdo by mi poradil ?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

V Ccku se porovnavaji retezce jinak
if (strcmp(jmeno,"Heslo") == 0) printf("Heslo je OK!");

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Ahoj. Tuším, že odpověď je v tom, že ukazatel na konstantní řetězec je něco jiného než pole znaků char.
Podmínka nebude nikdy splněna.

Pro porovnávání řetězců (respektive polí znaků) je funkce: strcmp

S tou by ti to mělo fungovat.


char jmeno[15];
scanf("%s",jmeno);

if (strcmp(jmeno,"Heslo")==0) printf("Heslo je OK!");
else
printf("Heslo NENI OK!");


Odpověď je možné hledat taky tady:
alpha.ujep.cz ...
a tady:
people.tuke.sk ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

V c jsem nedělal už aspoň 5 let, ale pokud moje chbá paměť slouží dobře, nemělo by být
scanf("%s", &jmeno);

Ale jak říkám, moje paměť a jazyk C nejsou moc v dobré kondici

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Neni protoze jmeno uz je sam o sobe ukazatel, tak neni treba tam dodavat &

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Děkuji moc "johnnash" i "Squad_leader", funguje to nyní ZCELA DLE MÝCH PŘEDSTAV!

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

A jak se to chova pri zadani hesla dlouheho 15 a vice znaku?

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: #include, Libovolný text, Kompilátor



Určitě si přečtěte


Aktuální číslo časopisu Computer

Jak rychlé je nabíjení bez drátů?

Test 11 sluchátek pro hráče

Aplikace, které vám zachrání dovolenou

Kompletní přehled datových tarifů