Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Confrontare due stringhe
Forum - C/C++ - Confrontare due stringhe

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Valcars (Normal User)
Newbie


Messaggi: 20
Iscritto: 29/05/2012

Segnala al moderatore
Postato alle 21:50
Venerdì, 21/12/2012
Salve a tutti sono di questo forum e anche nuovo in questo linguaggio. sento tanto parlare di voi così vi posto per chiedere un'aiuto. Il mio problema è questo in pratica voglio confrontare 2 stringhe ma quando cerco di compilare il file mi da un'errore sul terminale.
Cercando in internet ho visto che per confrontare 2 stringhe bisogna usare il comnado "strcmp". Ho provato anche in questo modo ma niente ecco ora vi posto il sorgente

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4.  
  5. char root="Prova";
  6. char username;
  7.  
  8. int main()
  9. {
  10. printf("Inserisci l'username:\n");
  11. scanf("%s",username);
  12.  
  13. while(strcmp(root,username)==0 {
  14. printf("Benvenuto %s \n");
  15. }
  16. return 0;
  17.  
  18. }




Ultima modifica effettuata da Valcars il 21/12/2012 alle 21:50


Ola :D
PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 22:25
Venerdì, 21/12/2012
Fai così:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char root[]="Prova";
  5. char username[];
  6.  
  7. int main(){
  8.   printf("Inserisci l'username:\n");
  9.   scanf("%s",username);
  10.  
  11.   if(strcmp(root,username)==0){
  12.     printf("Benvenuto %s \n",username);
  13.   }
  14.   return 0;
  15. }


Non l'ho provato perchè sono sul computer nuovo e non ho ancora installato il compilatore, ma dovrebbe funzionare.


PM Quote
Avatar
bububs (Normal User)
Expert


Messaggi: 253
Iscritto: 11/03/2010

Segnala al moderatore
Postato alle 23:25
Venerdì, 21/12/2012
Testo quotato

Postato originariamente da ale.gatti96 e Valcars:
  scanf("%s",username);


Attenzione alla 'e commerciale'!
scanf("%s", &username);

Ultima modifica effettuata da bububs il 21/12/2012 alle 23:27


Parte della disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.  [cit. Isaac Asimov]
PM Quote
Avatar
Valcars (Normal User)
Newbie


Messaggi: 20
Iscritto: 29/05/2012

Segnala al moderatore
Postato alle 23:38
Venerdì, 21/12/2012
ciao scusami ma nemmeno così ho risolto nel teminale mi esce l'errore

Codice sorgente - presumibilmente C/C++

  1. warning: array 'username' assumed to have one element [enabled by default]



non so se è importante ma lo posto io per compilare uso mingw da windows 7. Può essere anche questo il problema??


Ola :D
PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 0:28
Sabato, 22/12/2012
Testo quotato

Postato originariamente da bububs:

Testo quotato

Postato originariamente da ale.gatti96 e Valcars:
  scanf("%s",username);


Attenzione alla 'e commerciale'!
scanf("%s", &username);



@bububs Se mi ricordo bene essendo un array è già un puntatore (al primo elemento)

@Valcars l'errore te lo da su quale codice? quello che ho scritto io o quello che hai scritto tu?
Poi non mi ricordo se devi già dare una dimensione a "username", se non ti funziona il codice che ti ho scritto prova a scrivere così:
Codice sorgente - presumibilmente C/C++

  1. char username[20];


Ultima modifica effettuata da ale.gatti96 il 22/12/2012 alle 0:33


PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 10:59
Sabato, 22/12/2012
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char root[]="Prova";
  5. char *username;
  6.  
  7. int main(){
  8.  
  9.   username = malloc(sizeof(char) * 1024);
  10.   printf("Inserisci l'username:\n");
  11.   scanf("%s",username);
  12.  
  13.   if(strcmp(root,username)==0){
  14.     printf("Benvenuto %s \n",username);
  15.   }
  16.   return 0;
  17. }



devi allocare la memoria per la stringa che ricevi dallo scanf, infatti se lo dichiari così
Codice sorgente - presumibilmente C/C++

  1. char username[];



lui ti avvisa che hai dichiarato un array di un solo elemento,

Codice sorgente - presumibilmente C/C++

  1. char username[] = "username";


così invece dichiari un array di ("username").length :k:


... sei un proxy che perde i pacchetti ...
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 17:03
Domenica, 23/12/2012
Attenzione, prima della "return 0" ci vuole l'istruzione di Free(username);
La memoria deve essere SEMPRE deallocata, anche se il programma termina subito dopo. E' buona norma ricordarselo.
Altrimenti, usa la dichiarazione char username[1024]. Così non usi malloc ne free


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
Valcars (Normal User)
Newbie


Messaggi: 20
Iscritto: 29/05/2012

Segnala al moderatore
Postato alle 22:30
Domenica, 23/12/2012
ragazzi nulla da fare ho provato come mi ha spiegato ale.gatti 96 il teriminale me lo compila senza problemi però quando vado a mettere un nome qualsiasi mi passa alla password cioè in pratica non confronta le stringhe e non riesco a capire il perchè anche su internet ormai le ho provate tutte :( invece come mi spiegava tasx mi da un erroe mingw mi dice che malloc non è riconosciuta come funzione cmq ora provo ancora lorenzo o provato anche con il tuo consiglio ma mi succede la stessa cosa di ale.gatti :(


Ola :D
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 9:35
Lunedì, 24/12/2012
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4.  
  5.  
  6. int main(){
  7.  
  8.   char *root = "Prova";
  9.   char username[1024];
  10.  
  11.   printf("Inserisci l'username:\n");
  12.   gets(username);
  13.  
  14.   if(strcmp(root,username)==0){
  15.  
  16.     printf("Benvenuto %s \n",username);
  17.  
  18.   }
  19.   else
  20.   {
  21.           printf("Non riconosciuto %s \n",username);
  22.   }
  23.  
  24.   getch();
  25.   return 0;
  26.  
  27. }





così funziona. Se ancora non va indica come compili il progetto.



"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo