Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    21

    [C] vettore di caratteri (?)

    Salve ragazzi, sto cercando di imparare qualcosa in C, quindi le mie conoscenze sono molto limitate xD

    Ho scritto questo codice. La sua funzione è chiedere una "password" per poi compararla con quella scritta all'interno e dare risultato positivo o negativo.

    codice:
    #include <stdio.h>
    #include <windows.h>
    
    main ()
    {
         int text, pass=999;
             
         printf ("\n Inserisci la password: ");
         scanf ("%d", &text);
         
         if (text!=pass)
         do {
         printf (" Password errata, reinserisci la password: ");
         scanf ("%d", &text);
         } while (text!=pass);
            
         printf ("\n Password esatta ! ");
         
         system ("pause");
         return 0;
    }
    E funziona.. ma non riesco a fare in modo che la password impostata anzichè "999" sia un parola o un misto tra lettere e numeri.
    Credo di aver capito che si debba usare la funzione "getchar()", il tipo di dichiarazione "char" e le stringhe "%s" per l'acquisizione di più lettere... ma non riesco ç__ç

    Insomma ci ho sbattuto la testa ma proprio non capisco come modificare il mio codice per adattarlo alle lettere xD qualcuno mi può mostrare il codice esatto ?
    Uso Dev-C++ per la compilatura e sono in ambiente windows..

    Grazie !

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    prova con
    codice:
    char text[] = "password";
    char pass[] = "password";
    e poi:
    codice:
    scanf ("%s", &text);
    non posso garantirti che funzionera, ma le stringhe devi gestirle come array di caratteri, per stampare o prendere la stringa usi %s...
    ciaooo...

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Per confrontare due stringhe non si può usare == o !=, si usa la funzione strcmp (definita in string.h)!
    Se restituisce 0 le due stringhe sono uguali.

    Inoltre questo è sbagliato:

    scanf("%s", &text);

    Se text è un array il suo nome è già un indirizzo (quello del primo elemento) pertanto l'operatore di indirizzo non serve.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    21
    grazie mille per il vostro aiuto !

    il codice che ne è venuto fuori è:
    codice:
    #include <stdio.h>
    #include <windows.h>
    #include <string.h>
    
    int main ()
    {
         char pass[] = "PASSWORD";
         char text[50];
             
         printf ("\n Inserisci la password: ");
         scanf ("%s", &text);
         
         if (strcmp (text,pass)!=0)
         do {
         printf (" Password errata, reinserisci la password: ");
         scanf ("%s", &text);
         } while (strcmp (text,pass)!=0);
            
         printf ("\n Password esatta ! ");
         
         system ("pause");
         return 0;
    }
    Funziona perfettamente ^__^ grazie ancora !

  5. #5
    sostituisci:
    codice:
         if (strcmp (text,pass)!=0)
         do {
         printf (" Password errata, reinserisci la password: ");
         scanf ("%s", &text);
         } while (strcmp (text,pass)!=0);
    con:
    codice:
         while (strcmp (text,pass)!=0){
              printf (" Password errata, reinserisci la password: ");
              scanf ("%s", &text);
         }
    ;-)

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    21
    Wow !
    Non sapevo si potesse modificare in questo modo xD
    Effettivamente sia l'IF che il WHILE controllavano la stessa cosa...

    Benchè non mi sia chiaro come tutto ciò sia possibile ( xD ) ti sei sbattuto per semplificare il mio codice anche se avevo già ottenuto quello che volevo..

    Grazie infinite MacApp
    I forums sarebbero posti migliori se fossimo tutti come te xD

    Ancora grazie a Jacki93 e Alex'87 che mi hanno aiutato in precedenza ^__^

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Dag_01
    Benchè non mi sia chiaro come tutto ciò sia possibile ...
    Che vuoi dire? Benche' l'apporto di MacApp sia sempre decisivo, mi sembra che usare il while in C non sia una cosa fantastica ...

    Se poi non lo avevi mai visto/fatto, forse devi rivedere le pagine iniziali del libro di base del linguaggio che segui ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    21
    Originariamente inviato da oregon
    Che vuoi dire? Benche' l'apporto di MacApp sia sempre decisivo, mi sembra che usare il while in C non sia una cosa fantastica ...

    Se poi non lo avevi mai visto/fatto, forse devi rivedere le pagine iniziali del libro di base del linguaggio che segui ...
    1) Scusami se sono nabbo.
    2) L'avevo già usato anch'io ma in modo differente.
    3) Intendevo che dovevo ragionare sulla logica che ha usato lui per semplificare la mia porzione di codice.
    4) Non preoccuparti, mi sto già riguardando tutto. Sbagliando s'impara, e non credo che tutti nascano "imparati" no ?

    Se gentilmente qualche mod può chiudere prima che qualcun'altro abbia voglia di impartirmi qualche sua importantissima lezione di vita. Grazie.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Dag_01
    Se gentilmente qualche mod può chiudere prima che qualcun'altro abbia voglia di impartirmi qualche sua importantissima lezione di vita. Grazie.
    Il mio era un consiglio bonario ... nulla di offensivo ... non c'e' bisogno di prendersela ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.