Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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
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
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??

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:

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

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 :(

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.


PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo