Il Sistema Di Lavaggio.Console.Read()

Sto imparando il C# per uno dei miei corsi e per il mio incarico ho bisogno di ottenere l’input dell’utente da console.

Nel mio programma ho:

choice = (char)System.Console.Read();

Più tardi, il programma che uso

if (System.Console.ReadLine() == "y")

per ottenere input da parte dell’utente.

La seconda istruzione viene ignorato quando ho eseguito il programma. Sto indovinando che il Sistema.Console.Read() è in partenza una nuova riga nel flusso. In C/C++, c’è fflush() e cin.ignore(). Che cosa è l’equivalente della funzione in C#?

So che probabilmente è più facile per me di utilizzare ReadLine() o ReadKey(), ma io sono solo curioso di sapere come utilizzare Read() con a capo

OriginaleL’autore Alan | 2011-09-04

3 risposte

  1. 9

    Sì, console di ingresso è separato dal sistema operativo. Read() chiamata non tornare fino a quando l’utente preme Invio. Sapendo questo, si potrebbe semplicemente chiamare ReadLine() per poi consumare il buffer. O utilizzare ReadLine() in primo luogo.

    O l’apposito metodo che restituisce un singolo tasto: Console.ReadKey()

    Tuttavia, non si desidera utilizzare se mai aspettarsi il vostro programma per essere utilizzato con il reindirizzamento dell’input. Quale è il motivo che c’è più di un modo, apparentemente, raggiungere lo stesso obiettivo: ReadKey() ignora il stdin flusso di input, quello che viene reindirizzati. Si parla di basso livello, supporto per la console funzioni direttamente. C’è un modo per rilevare questo modo è in grado di supportare sia, controllare questa risposta.

    OriginaleL’autore Hans Passant

  2. 13

    Questo è il mio equivalente per fflush:

    while (Console.KeyAvailable)
        Console.ReadKey(true);

    OriginaleL’autore MdxBhmt

  3. 1
    class Program
    {
    
        static void Main(string[] args)
        {
            if (Console.ReadLine() == "y")
                Console.WriteLine("You typed y");
    
            Console.ReadLine();
    
        }
    }

    Si può anche fare

    if (Console.ReadLine().ToLower() == "y")
                Console.WriteLine("You typed y");

    se si sta facendo char c = (char) Console.Read(); quindi qualunque tipo di Console.Leggi .. devi continuare a immettere l’istruzione per la Console.Readline() accanto ad essa per la Console.Readline () per lavoro.

    In alternativa è possibile utilizzare
    se (Console.ReadLine().ToLower().Trim() == “y”)

    Ma per questo lavoro si digita qualcosa per Console.Read()

    come input il valore di N e quindi è necessario digitare y, dopo alcuni spazi per la prossima Console.ReadLine () per valutare.

    Come questo.

        n                y

    class Program
    {
    
        static void Main(string[] args)
        {
            char c = (char)Console.Read();
             if (Console.ReadLine().ToLower().Trim() == "y")
                Console.WriteLine("You typed y");
    
            Console.ReadLine();
    
        }
    
        //input: n   y
        //output: You typed y
    }

    C’è qualcosa di appena vicino al filo che è la Console.Metodo Clear() ma questo comporta anche il display del buffer.

    OriginaleL’autore Adnan Bhatti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *