gpt4 book ai didi

android ndk c函数返回奇怪的值

转载 作者:行者123 更新时间:2023-11-30 16:45:45 25 4
gpt4 key购买 nike

Android Studio 2.3.2Gradle 实验 0.9.2最后的 NDK。我用 C 语言编写了一个小函数,该函数通过 Java 中的 JNI 调用,但返回的字符串位于不应该出现的字符之前。这是 C 函数:

    char * text() {
char * txt = "a";
char * ret = malloc(strlen(a)+2);
strcat(ret,txt);
strcat(ret,"b");
return ret;
}

这就是JNI C返回Java

    JNIEXPORT jstring JNICALL 
Java_com_myapp_Main_getMsg(JNIEnv *env, jobject instance, jstring var)
{
char * msg = text();

return (*env)->NewStringUTF(env, msg );
}

这是 Java 调用:

static {
System.loadLibrary("myapp");
}
public native String getMsg(String var);

String stringreturnedfromC = getMsg("eee");//eee is not used

这显示了这个:

_Main_getMsgab

但应该只返回“ab”。

这是一种奇怪的行为。为什么?我怎样才能得到正确的字符串?

最佳答案

注意到您的函数 text() 不正确。

做这样的事情

char * text() {
char * txt = "a";
char * ret = (char *)malloc(strlen(txt)); //malloc(strlen(a)+2); is incorrect statment
strcat(ret,txt);
strcat(ret,"b");
return ret;
}

关于android ndk c函数返回奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43995227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com