Oppure

Loading
17/03/11 11:03
PeppEX185
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...
#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...

Come mai ? dove sbaglio ?

Grazzie mille :D
aaa
17/03/11 11:24
_mikele_
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>

#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");
    return 0;
}


:)
Ultima modifica effettuata da _mikele_ 17/03/11 13:19
aaa
17/03/11 11:25
Bonny
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>
aaa
17/03/11 11:35
carlduke
questa riga è sbagliatissima:

if (x == 'ciao'){


gli apici ' ' servono per confrontare caratteri singoli, mentre quella è una stringa.
fai come ti hanno gia detto :k:
Ultima modifica effettuata da carlduke 17/03/11 12:24
aaa
17/03/11 13:05
crash outside control
Non stampa "ok" semplicemente perchè (come ha detto Bonny) restituisce 0 se le due stringhe sono uguali.

Quindi per stampare "ok" quando la stringa inserita è "ciao", devi scrivere:

if (!strcmp(x, "ciao")) printf("Ok\n");
aaa
07/04/11 13:51
Metal
Giusto per farti capire perché il tuo codice non funzionava, quando nel tuo codice fai:
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 ^^
aaa
21/04/11 8:57
Peppe91
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). :)
aaa