Diskuze: Help !
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 21 zpráv z 21.
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
#include <string.h>
char *heslo = "ahoj";
char *zadane = "";
printf(">>Zadaj heslo:\n");
/*ak je heslo spravne*/
scanf("%s",&zadane);
if (strcmp(zadane, heslo))
{
printf("Uspech !!!");
}
To snad nemyslíš vážně ne? Jestli se budete psát na něco takového
hned jak to nejde tak z vás nikdy dobří programátoři nebudou..
Programování je o tom hledat a poučovat se z chyb a hledat na googlu...
Takhle se nikam nedostanete.
Jednou jsem dělal program v konzoli který vezme prvních 5 písmen z inputu a
byly tam nějaké chyby které jsel hledal asi hodinu!
Proč je heslo jako char?
Pro porovnavani v ifu se používá ==. = se používá na přiřazování
Jestli je to V C jinak než v moderních jazycích tak se všem omlouvám
Chyba je v porovnani hodnot premennych... Na porovnanie sa nepouziva "=" ale
"=="
char *heslo = "ahoj";
char *zadane = "";
printf(">>Zadaj heslo:\n");
/*ak je heslo spravne*/
scanf("%c",&zadane);
if (zadane == heslo)
{
printf("Uspech !!!");
}
btw "==" ma vyznam "rovna sa" a "=" sluzi na priradenie
Vždyť jsem to psal
Pro porovnavani v ifu se používá ==. = se používá na přiřazování
No mohl jsem vynechat to v ifu..
Můžu se zeptat proč tam je: char *heslo = "ahoj"; a ne string heslo =
"ahoj";
?
Chyba byla především v tom, že řetězce ve stylu C nelze porovnávat pomocí žádného operátoru (= ani ==), == porovná pouze adresy prvních znaků, pro porovnání řetězců se dá použít právě například funkce strcmp, ta ale při shodě řetězců vrací nulu, tudíž by před ní měla být negace nebo porovnání s nulnou. Je tam ale pořád ještě jedna dost zásadní chyba.
Je super, že jsi mu jí neřekl (To není sarkasmus)
Hrubky! Jestli nad tím takto přemýslíš tak začni s lehčími jazyky (např. Java/C#) a ne s C
char heslo[] = "ahoj";
char zadane[1024]; // nebo malloc - musí být allokován
printf(">>Zadaj heslo:\n");
scanf("%s",zadane);//načítáš "string" ne jeden znak a %s
//warning: format ‘%s’ expects argument of type ‘char *’ - to byla další chyba...
if (!strcmp(zadane, heslo)){//pokud dobře vrací nulu
printf("Uspech !!!\n");
}
To C je ale záludné
TrollKill : Opravdu radši přejdi na C#. Je to moderní a rychlý jazyk. + Na netu se válí spousta tutoriálů.
Protože C nezná typ String a používá se místo něj pole znaků
Teda pokud C nebudete /nemáte ve škole. Ale tam se stejně většinou učí
jen základy takže to C# je stejně dobrá volba.(Kolik jazyků umíš,
tolikrát jsi programátor
)
Programování bez stringu? WOW Díky za odpověď.
Ach jo, já chtěl aby na tu chybu přišli samy a ty jim všechno vykecáš
Já jsem si tvůj komentář četl až když jsem to napsal, nějak mě tohle
nenapadlo a zrovna jsem pracoval
s C tak jsem si mohl být jist správností svého řešení.
Zobrazeno 21 zpráv z 21.