Rust程序退出异常:输入‘q’无法终止程序求助
Rust程序输入"q"无法退出的问题修复
问题根源
输入"q"后程序没反应,是因为read_line会把输入时按下的回车(换行符\n或Windows下的\r\n)也读进字符串里,此时inp的值是"q\n",和你判断的"q"不相等,导致退出逻辑根本没触发。
修复后的代码
use std::io; fn main() { let mut v1: Vec<i32> = Vec::new(); loop { println!("Enter: "); let mut inp: String = String::new(); io::stdin().read_line(&mut inp).expect("Failure"); let trimmed_inp = inp.trim(); // 先检查是否要退出 if trimmed_inp == "q" { break; } // 再处理数字解析 match trimmed_inp.parse() { Ok(num) => { v1.push(num); println!("{:?}", v1); }, Err(_) => { println!("请输入有效数字,或者输入q退出"); continue; } }; } }
核心改动说明
- 先对输入字符串做
trim()处理,把首尾的空白(包括换行符)都去掉,这样输入"q"回车后,trimmed_inp就是纯"q",能正确触发退出 - 把退出判断移到数字解析前面,逻辑更顺畅,不用等到解析失败才去检查退出指令
- 解析失败时添加了提示信息,用户能明确知道操作错误点
内容的提问来源于stack exchange,提问作者user20424877
相关产品推荐
相关产品推荐

