Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Buongiorno da un paio di giorni ho cominciato a studiare il C da autodidatta
Ma ho un problema che ho cercato di risolverlo tramite google ma niente...
Codice sorgente - presumibilmente C++
#import <stdio.h>
int main (int argc, char*argv[20], char*envp[])
{
char x[20];
printf("Inserisci ciao ");
scanf("%s",x);
if(x =='ciao'){
printf("ok");
}
system("PAUSE");
}
Praticamente il codice mi chiede di inserire ciao e lo mette nella variabile x poi tramite un if se la variabile contiene ciao mi stampa ok ma invece quando lo eseguo scrivo ciao e invece di comparirmi ok mi compare Premi un tasto per continuare...
In C non puoi fare un confronto x == "ciao" ma devi usare una funzione che si chiama stringcompare, strcmp(s1, s2);
In s1 metti la variabile x, in s2 "ciao", ricordati di includere la libreria <string.h>
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <string.h>
int main()
{
char x[20];
printf("Inserisci ciao: ");
scanf("%s", x);
if(strcmp(x, "ciao")==0)
printf("Ok\n");
return0;
}
Ultima modifica effettuata da _mikele_ il 17/03/2011 alle 14:19
Grazie mille ci prov e vedo se funziona :D - PeppEX185 - 17/03/11 13:12
Niente... ho provato a eserguire questo codice ma mi da errore nella linea 10 - PeppEX185 - 17/03/11 13:26
ok trovato nella stringa if(strcmp(s, "ciao") mancava una parentesi xD - PeppEX185 - 17/03/11 13:29
Dopo aver eseguito correttamente scrivo ciao e non mi sputa ok .-. - PeppEX185 - 17/03/11 13:31
mi sono dimenticato un parentesi tonda alla fine della riga 9 scusate l'ho scritto senza provarlo, cambia la riga con if(strcmp(s, "ciao")) - _mikele_ - 17/03/11 14:12
ahah giusto ecco cosa succede quando non si provano i programmi, la funzione ritorna 0 se c'è il confronto, adesso modifico il programma poi funziona :) - _mikele_ - 17/03/11 14:17
ok ora funziona l'ho provato :D - _mikele_ - 17/03/11 14:20
per fare i confronti tra "stringhe" in linguaggio c devi usare la funzione
strcmp(char *v1,char *v2); restituisce 0 se v1 è uguale a v2.
Devi includere: #include<string.h>
Giusto per farti capire perché il tuo codice non funzionava, quando nel tuo codice fai:
Codice sorgente - presumibilmente C/C++
if (x == 'ciao')
stai cercando di confrontare un puntatore (x) con una stringa ('ciao'); 'x' infatti contiene l'indirizzo di memoria del primo elemento dell'array (gli indirizzi di memoria sono valori esadecimali che rappresentano una particolare posizione della memoria).
Se non hai ancora studiato i puntatori, capirai meglio più avanti ^^
Io vedo la variabile x dichiarata come array. Non puoi inserire in questo modo dei caratteri in un array. Ti serve prima di tutto un ciclo for che ti permette di inserirli e poi lo strcmp per confrontare. E non (x==ciao).