我有一个函数在Rust. 它接收 a*const c_char并将其转换为字符串。
#[no_mangle]
pub extern "C" fn listen(addr: *const c_char) {
unsafe {
let addr_str = {
let cstr = CStr::from_ptr(addr);
let bytes = cstr.to_bytes();
String::from_raw_parts(bytes.as_ptr() as *mut u8, bytes.len(), bytes.len())
};
}
}
Run Code Online (Sandbox Code Playgroud)
在 C 程序中,我从命令行获取地址。
#include "xxx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
// input: address
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage %s <listen_addr>\n", argv[0]);
return -1;
}
const char *addr = argv[1];
listen(addr); …Run Code Online (Sandbox Code Playgroud)