Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    7

    [C] confronto tra caratteri nei cicli o nelle condizionali

    Ragazzi come faccio a fare un confronto tra 2 caratteri? Mi spiego meglio facendovi vedere il codice:
    codice:
    #include "oroscopo.h"
    
    main(){
    char s1;
        printf("\tOROSCOPO\n");
        printf("Inserisci la tua data di nascita e scopri il tuo oroscopo!\n");
        do{
            printf("Vuoi proseguire?(s/n): ");
            s1=getchar();
    	if(s1==' ') s1='s';
    	printf("  %c  ",s1);
        }while(s1!='s'||s1!='S');
    }
    io inserisco la risposta e la metto in s1, poi quando faccio l'if o il while non mi funzionano i confronti!! entra in loop il programma ogni risposta che inserisco viene presa correttamente ma il ciclo si ripete... come posso fare? ho anche provato a mettere la risposta come stringa ed usare strcmp() ma niente lo stesso. Grazie in anticipo per il vostro aiuto!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21
    Al posto di || prova ad inserire &&.
    A volte non ti lascia inserire il carattere perchè rimane nel buffer \n, cioè la pressione dell'invio..

    Quindi, dopo s1 = getchar(), prova ad inserire invio = getchar().
    Naturalmente all'inizio dovrai dichiarare char invio.

    A me così funziona


    Con || non va perchè la condizione sarà sempre verificata. || vuol dire che la condizione è vera se almeno una delle due condizioni è vera, quindi sempre.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    7
    grazie mille adesso il ciclo funziona, un'ultima domanda, come faccio a fare in modo che se io premessi inviio senza inserire un carattere mi prenda direttamente la scelta 's'.. come quando si fanno le installazioni da terminale linux... c'è un modo? perchè come faccio io non funziona, lo prende come 'spazio' mentre dovrebbe prendere un carattere vuoto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21
    Scusami, non ho ben capito..

    Se è come ho inteso, non devi confrontare come spazio vuoto, ma con '\n'.

    Quindi s1 != '\n'

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    7
    grazie, è come dici tu, funziona alla perfezione

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.