
Valcars (Normal User)
Newbie
    
Messaggi: 20
Iscritto: 29/05/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++ |
#include <stdio.h> #include <string.h> char root="Prova"; char username; int main() { printf("Inserisci l'username:\n"); scanf("%s",username); while(strcmp(root,username)==0 { printf("Benvenuto %s \n"); } return 0; }
|
Ultima modifica effettuata da Valcars il 21/12/2012 alle 21:50 |
|

ale.gatti96 (Member)
Pro
    
Messaggi: 71
Iscritto: 29/11/2011
|
Fai così:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <string.h> char root[]="Prova"; char username[]; int main(){ printf("Inserisci l'username:\n"); scanf("%s",username); if(strcmp(root,username)==0){ printf("Benvenuto %s \n",username); } return 0; }
|
Non l'ho provato perchè sono sul computer nuovo e non ho ancora installato il compilatore, ma dovrebbe funzionare.
|
|

bububs (Normal User)
Expert
    
Messaggi: 253
Iscritto: 11/03/2010
|
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 |
|

Valcars (Normal User)
Newbie
    
Messaggi: 20
Iscritto: 29/05/2012
|
ciao scusami ma nemmeno così ho risolto nel teminale mi esce l'errore
Codice sorgente - presumibilmente C/C++ |
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??
|
|

ale.gatti96 (Member)
Pro
    
Messaggi: 71
Iscritto: 29/11/2011
|
Postato originariamente da bububs:
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++ |
Ultima modifica effettuata da ale.gatti96 il 22/12/2012 alle 0:33 |
|

tasx (Dev Team)
Expert
    
Messaggi: 439
Iscritto: 15/12/2008
|
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <string.h> char root[]="Prova"; char *username; int main(){ username = malloc(sizeof(char) * 1024); printf("Inserisci l'username:\n"); scanf("%s",username); if(strcmp(root,username)==0){ printf("Benvenuto %s \n",username); } return 0; }
|
devi allocare la memoria per la stringa che ricevi dallo scanf, infatti se lo dichiari così
Codice sorgente - presumibilmente C/C++ |
lui ti avvisa che hai dichiarato un array di un solo elemento,
Codice sorgente - presumibilmente C/C++ |
char username[] = "username";
|
così invece dichiari un array di ("username").length |
|

lorenzo (Normal User)
Guru
    
Messaggi: 1178
Iscritto: 15/04/2008
|
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
|
|

Valcars (Normal User)
Newbie
    
Messaggi: 20
Iscritto: 29/05/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
|
|

lorenzo (Normal User)
Guru
    
Messaggi: 1178
Iscritto: 15/04/2008
|
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <conio.h> #include <string.h> int main(){ char *root = "Prova"; char username[1024]; printf("Inserisci l'username:\n"); gets(username); if(strcmp(root,username)==0){ printf("Benvenuto %s \n",username); } else { printf("Non riconosciuto %s \n",username); } getch(); return 0; }
|
così funziona. Se ancora non va indica come compili il progetto.
|
|