C语言返回字符数组,java接收
时间: 2024-02-01 18:38:55 浏览: 80
在C语言中,可以返回字符数组作为函数的返回值。在Java中,可以使用JNI(Java Native Interface)来调用C语言函数并接收返回值。
以下是一个示例:
C代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* get_string() {
char* str = malloc(6 * sizeof(char));
strcpy(str, "Hello");
return str;
}
```
Java代码:
```java
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
public class Main {
static {
System.loadLibrary("libexample"); // 加载C语言编译后的动态库文件
}
public static native byte[] get_string(); // 声明C语言函数
public static void main(String[] args) {
byte[] bytes = get_string(); // 调用C语言函数
String str = new String(bytes, StandardCharsets.UTF_8);
System.out.println(str); // 输出:Hello
}
}
```
在C语言中,函数返回的是字符数组的首地址。在Java中,使用`byte[]`来接收返回值,并且需要注意编码问题,这里使用UTF-8编码。需要编译C代码并生成动态库文件,然后在Java中加载该动态库。
阅读全文