You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:55:17