PDA

Visualizza la versione completa : Problema variabile


17qwerty71
10-08-2003, 01:11
Ho un problema riguardo ad una variabile.
In quanto quanto gli assegno un'uguaglianza (es. variabile==ciao),e mi da un errore,penso che sia perch il programma di compilazione (Dev-C++), sottointende l'uguaglianza ad un'altra variabile, che per non esiste perch io intendo l'uguaglianza alla stringa "ciao".

Shores
10-08-2003, 01:32
Uhm, hai le idee un po' confuse:

Primo, la differenza tra ASSEGNAMENTO e CONFRONTO:

1) == l'operatore di confronto, (X==0) vale TRUE se x contiene il valore numerico 0 FALSE al contrario.

2) = l'operatore di assegnamento, (X=0) un'espressione che ha un valore logico poco utile, ma che CAMBIA il contenuto di X e lo imposta a zero.

Chiarito questo, probabilmente il tuo problema sta tutto nel fatto che hai dimenticato che le costanti stringa vanno racchiuse tra virgolette, altrimenti il compilatore cerca di interpretarle come variabili:

(variabile == "ciao")

una espressione di confronto che vale TRUE se la variabile di tipo stringa e il suo contenuto la stringa "ciao", FALSE in caso contrario.

17qwerty71
10-08-2003, 01:35
Ah grazie, me l'ero scordato.

Shores
10-08-2003, 01:42
Prego, non c' di che!

17qwerty71
10-08-2003, 19:56
ho fatto, ma non funziona!!!:dh:

Shores
10-08-2003, 20:52
Cio?

Che errore ti da?

17qwerty71
10-08-2003, 23:43
Non che mi da un errore, il problema quando eseguo il programma che quando arrivo al punto dove c' "if" e poi "else" mi esegue sempre else anche scrivo la stringa contenente nel comando dell'if.

Ad esempio:

if (variabile=="ciao")
{
.....
.....
.....
}
else
{
......
......
......
}
.....
.......
}

Mi esegue sempre else anche se digito ciao.

Shores
10-08-2003, 23:56
Cio quello che stai dicendo che il valore della variabile lo leggi da tastiera?

Se cos, attenzione, perch di solito nella variabile viene messo anche il carattere di invio, che quindi deve far parte del confronto...

Stai molto attento con gli input da tastiera!

Puoi vedere se il problema questo, mettendo subito prima della if una assegnazione diretta:

variabile="ciao"

e vedere se cos viene eseguita la parte if invece che quella else...

Michele Facchin
11-08-2003, 11:03
Avete un p le idee confuse tutti e due..

In C il confronto tra stringhe si f utilizzando la funzione strcmp() contenuta nel header <string.h>.

Saluti..

Shores
11-08-2003, 12:33
Originariamente inviato da Michele Facchin
Avete un p le idee confuse tutti e due..

In C il confronto tra stringhe si f utilizzando la funzione strcmp() contenuta nel header <string.h>.

Saluti..

Uhm, mi sa che sei tu a non aver letto tanto bene: l'unico linguaggio che viene citato nel post originale il C++, nel quale, grazie all'overloading degli operatori, l'espressione di confronto che ho scritto pi che corretta.

E comunque, in C le stringhe non esistono, esistono solo gli array di CHAR, se proprio vogliamo essere pignoli.

Loading