无法从系统方法调用 chcp

Can't call chcp from the system method

您好,我想通过 windows api 调用 system.

从我的程序中 运行 命令 chcp 65001

我的程序是用 rust 编写的,但使用外部 c。

extern "C" {
    pub fn system(command: *const u8);
}

fn main() {
    unsafe {
        system("\"\"chcp\" \"65001\"\"".as_ptr());
    }
    // do work
}

调用有效,但我无法正确格式化要传递给 system 的字符串。

针对 this 问题,我尝试了以下组合。

"\"\"chcp\" \"65001\"\""(锈格式)
结果是:Parameterformat wrong - "65001"

我也尝试了一些其他变体但没有成功:
"\"\"chcp\" 65001\""
结果:Parameterformat wrong - /rustc

"\"\"chcp 65001\""
结果 the system can't find the given path

第一个变体接缝很好,唯一的问题是 chcp 确实抱怨 \"

你知道如何通过它吗?

奖励:为什么“/rustc”出现在变体 2 中。

感谢您的帮助!

Rust 字符串不是以 NUL 结尾的,因此您对系统的调用正在读取字符串之后内存中的任何内容。我想这就是您的 /rustc 的来源。您需要将字符串转换为 CString 以确保它正确终止:

system (CString::new ("chcp 65001").unwrap().as_ptr());