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
6 lis 12:53