matematykaszkolna.pl
Programowanie Petr: Jezyk C Programowanie. Czemu nie działa ten kod, z góry dzięki. #include <stdio.h> #include <stdlib.h> int main() { char haslo[40]; printf("Wpisz wymagane haslo \n"); scanf("%s",haslo); if (haslo=='abcde') printf("Haslo Poprawne\n"); else printf("Zle haslo. Odmowa dostepu"); return 0; }
6 lis 11:28
jc: Usuń nieużywane #include <stdlib.h> Dopisz #include <string.h> Zamień if (haslo=='abcde') na if( strcmp(haslo,"abcde") == 0 ) Dobrze też zmienić scanf("%s",haslo); na scanf("%39s",haslo);
6 lis 12:04
Jack: @jc tak btw. co robi dodanie %39s zamiast %s?
6 lis 12:10
jc: Zostanie przeczytanych najwyżej 39 znaków.
6 lis 12:29
Dziadek Mróz: if (haslo=='abcde') Ta konstrukcja jest zła, ponieważ zostaną porównane adresy tych zmiennych int strcmp ( const char * str1, const char * str2 ); Funkcja porównuje oba napisy od początku, znak po znaku i kończy działanie na różnicy dwóch znaków lub na dojściu do końca któregoś/obu z nich Zwracane wartości: <0 pierwszy znak w porównaniu jest mniejszy (ASCII) 0 oba napisy są takie same >0 pierwszy znak w porównaniu jest większy (ASCII) Jeżeli Twoje hasło mieści się w tablicy 40 znaków to polecam użycie funkcji: int strncmp ( const char * str1, const char * str2, sizet num ); Jako trzeci argument podasz zakres porównywania, czyli ile znaków zostanie porównanych Język C zmusza programistę do kontrolowania kodu. W C++ wszystko jest podane na tacy, tutaj musisz się wykazać umiejętnością ;)
6 lis 12:52
6 lis 12:53
Dziadek Mróz: A dokładnie do: http://www.cplusplus.com/reference/clibrary/ Jeżeli już używasz C
6 lis 12:53