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
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
Questo è il mio equivalente per fflush:
OriginaleL’autore MdxBhmt
Si può anche fare
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.
C’è qualcosa di appena vicino al filo che è la Console.Metodo Clear() ma questo comporta anche il display del buffer.
OriginaleL’autore Adnan Bhatti