我有一个期望的 C 函数,*const std::os::raw::c_char
并且我在 Rust 中完成了以下操作:
use std::os::raw::c_char;
use std::ffi::{CString, CStr};
extern crate libc;
fn main() {
let _test_str: *const c_char = CString::new("Hello World").unwrap().as_ptr();
let fmt: *const c_char = CString::new("%s\n").unwrap().as_ptr();
unsafe { libc::printf(fmt, _test_str); }
unsafe {
let slice = CStr::from_ptr(_test_str);
println!("string buffer size without nul terminator: {}", slice.to_bytes().len());
}
}
但是,我无法_test_str
打印出来,上面程序的输出很简单
string buffer size without nul terminator: 0
如果我将它传递给_test_str
某个 C 函数并看到它是一个空字符串。我做错了什么?