Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    programma in jedit: problemi con scanf

    #include<stdio.h>

    main() {

    char giocatore1;
    char giocatore2;

    printf("Inizia il gioco della morra cinese...\n");

    printf("Giocatore2 inserisci il tuo nome!\n");
    scanf("%c",&giocatore2);
    printf("Giocatore1 inserisci il tuo nome!\n");
    scanf("%c",&giocatore1);

    printf("giocatore1: %c, giocatore2: %c", giocatore1, giocatore2);
    }

    il programma è il seguente...
    quando lo compilo non mi dà nessun errore
    ma quando lo eseguo mi chiede il nome del giocatore2, io lo scrivo, schiaccio invio e a quel punto mi scrive
    Giocatore1 inserisci il tuo nome!
    giocatore1: , giocatore2:
    senza permettermi di inserire il nome del giocatore1
    non capisco come mai!

    grazie mille!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi sempre indicare il linguaggio con cui programmi nel titolo.

    In ogni caso, non puoi pensare di usare una variabile

    char

    per inserire una stringa.

    Un char equivale ad un solo carattere, non ad una stringa.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    anche inserendo un solo carattere il problema è lo stesso...

  4. #4
    comunque come posso fare per inserire una stringa?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Con un carattere hai il problema perché non consideri l'invio.

    Per le stringhe, devi utilizzare le stringhe del C ... i vettori di char

    char s[100];
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    17
    Come ha detto oregon, con il carattere hai il problema perché non consideri il carattere invio, che in C si rappresenta con "\n".
    Praticamente, mettiamo che tu voglia inserire il carattere "c" e poi schiacci invio. La pressione del tasto Invio è salvato nel buffer della tastiera e la SECONDA scanf riceverà quello e lo interpreta come \n.

    Per ovviare a questo devi usare la funzione

    fflush(stdin)

    dopo la prima scanf, in modo da svuotare la seconda tastiera

    Ovviamente questo vale per i caratteri, se vuoi inserire delle Stringhe devi usare un ARRAY di caratteri.

  7. #7
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    aggiungo un commento , per evitarti un errore .
    dopo aver sostituito al posto di variabili char arrey di char .
    sostituisci nella printf il carattere %c con %s , che indica una "stringa".
    Tecnologia

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.