无法从系统方法调用 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());
您好,我想通过 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());