Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    4

    [C] Confronto variabile char con int

    Ciao a tutti ragazzi, vorrei chiedervi consiglio.
    Non riesco a confrontare due elementi, uno char ed uno int, mi spiego meglio:

    Vi scrivo le parti del programma interessate:

    codice:
    #include <stdlib.h>
    
    char ch;
    int m;
    
    ch=getchar(); //digito 3, per esempio
    m= 3;
    
    if(ch == m) //Non confronta...
       printf("ok");
    Ho provato con getc, getch e getchar, ed confrontando con apici e quant'altro...ma niente.
    Come posso risolvere?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Perché un char è espresso tramite codice ASCII

    http://it.wikipedia.org/wiki/ASCII

    e il carattere '3' vale 51, ovviamente diverso da 3.

    Per confrontarli devi scrivere

    if(ch == '0'+m)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Basta aggiungere 48, il carattere '3' ha valore ASCII 51, controlla la tabella ASCII.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    4
    Originariamente inviato da oregon
    Perché un char è espresso tramite codice ASCII

    http://it.wikipedia.org/wiki/ASCII

    e il carattere '3' vale 51, ovviamente diverso da 3.

    Per confrontarli devi scrivere

    if(ch == '0'+m)
    Qualcuno mi sopprima..che idiota che sono...
    Grazie mille.

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Attento che funziona solo per le cifre...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da Scara95
    Attento che funziona solo per le cifre...
    Che senso avrebbe paragonare numeri e lettere?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    4
    Originariamente inviato da Scara95
    Attento che funziona solo per le cifre...
    Si certo, era quello lo scopo

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Originariamente inviato da Kaamos
    Che senso avrebbe paragonare numeri e lettere?
    Nel senso che, ovviamente, non funziona su un inserimento tipo 10, anche perchè vengono letti come 2 caratteri diversi da getchar...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Siccome (anche se mi pareva ovvio) non funziona per più cifre, si può facilmente scavalcare la cosa usando le funzioni atoi e sprintf.
    Ecco qua due esempi (puramente didattici):

    codice:
    int num;
    char c;
    char buf1[100];
    // input di num e c
    sprintf(buf1,"%c",c);
    printf("%d\n", atoi(buf1) == num);
    codice:
    int num;
    char c;
    char buf1[100], buf2[100];
    // input di num e c
    sprintf(buf1,"%c",c);
    sprintf(buf2,"%d",num);
    printf("%d\n", strcmp(buf1,buf2));

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    4
    E se volessi fare la stessa operazione con un array?

    Ho creato un array in cui inserisco una sequenza di lettere ecc...
    Se nell'array c'è scritto Reset allora parte un if ecc...

    ossia:

    if(array==Reset)
    .....

    come confronto un'intero vettore?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.