snippetrustCritical
How do I print output without a trailing newline?
Viewed 0 times
howoutputtrailingprintwithoutnewline
Problem
The macro
gives the output
I don't want the user's input
println! in Rust always leaves a newline character at the end of each output. For exampleprintln!("Enter the number: ");
io::stdin().read_line(&mut num);gives the output
Enter the number:
56
I don't want the user's input
56 to be on a new line. How do I do this?Solution
It's trickier than it would seem at first glance. Other answers mention the
print! macro but it's not quite that simple. You'll likely need to flush stdout, as it may not be written to the screen immediately. flush() is a trait method that is part of std::io::Write so that needs to be in scope for it to work (this is a pretty easy early mistake).use std::io;
use std::io::Write; // <--- bring flush() into scope
fn main() {
println!("I'm picking a number between 1 and 100...");
print!("Enter a number: ");
io::stdout().flush().unwrap();
let mut val = String::new();
io::stdin().read_line(&mut val)
.expect("Error getting guess");
println!("You entered {}", val);
}Code Snippets
use std::io;
use std::io::Write; // <--- bring flush() into scope
fn main() {
println!("I'm picking a number between 1 and 100...");
print!("Enter a number: ");
io::stdout().flush().unwrap();
let mut val = String::new();
io::stdin().read_line(&mut val)
.expect("Error getting guess");
println!("You entered {}", val);
}Context
Stack Overflow Q#37531903, score: 159
Revisions (0)
No revisions yet.