Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con i confronti tra char
Forum - C/C++ - Problema con i confronti tra char

Avatar
NOVA99 (Member)
Rookie


Messaggi: 33
Iscritto: 02/08/2014

Segnala al moderatore
Postato alle 11:43
Venerdì, 15/08/2014
Salve, devo fare un programma per la scuola in cui, ad un certo punto, devo vedere se una lettera è o meno una vocale. Ovviamente, per farlo ho usato una selezione semplice, ma l'IDE (nel mio caso DEV-C++) fa due cose:

a. mi dice "[Warning] comparision between pointer and integer"
b. quando eseguo il programma il computer esegue sempre lo stesso ramo dell' "if...else..." a priori.

Il codice è il seguente:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. int main()
  6. {
  7.      char car;    
  8.          
  9.      system("TITLE ERRORE CHAR");
  10.      system("COLOR FC");
  11.      
  12.      printf("INSERISCI UNA LETTERA MINUSCOLA = ");
  13.      car=getche(); //acquisisce car
  14.      
  15.      if ((car!="a")&&(car!="e")&&(car!="i")&&(car!="o")&&(car!="u")) //controlla se è una vocale...
  16.      {
  17.           printf("\n\n");
  18.          
  19.           putchar(car);
  20.          
  21.           printf(" E' UNA VOCALE"); //e si arriva a questa istruzione anche senza che car sia una vocale!
  22.      }
  23.      else
  24.      {
  25.           printf("\n\n");
  26.          
  27.           putchar(car);
  28.          
  29.           printf(" NON E' UNA VOCALE");
  30.      }
  31.      
  32.      getch();
  33.      
  34. }



Non riesco a capire il problema, anche perche' ho fatto altri programmi in cui usavo dei confronti
tra caratteri e funzionavano perfettamente.

Qualcuno sa dirmi una soluzione?

Grazie.


La cosa più disumana di un computer è che una volta programmato si comporta in modo disumanamente onesto - (Isaac Asimov)
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 950
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 13:39
Venerdì, 15/08/2014
Ciao!

In c i doppi apici indicano una stringa. Nella 15 stai confrontando il valore di car, il codice ASCII del carattere associato, con l' indirizzo di una stringa statica.


Nulla va più veloce della luce, quindi rilassati.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:07
Venerdì, 15/08/2014
Singoli apici non doppi

car!='a'


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
NOVA99 (Member)
Rookie


Messaggi: 33
Iscritto: 02/08/2014

Segnala al moderatore
Postato alle 11:36
Lunedì, 18/08/2014
Aaah, ecco. Grazie mille, adesso funziona!:k:


La cosa più disumana di un computer è che una volta programmato si comporta in modo disumanamente onesto - (Isaac Asimov)
PM Quote