當我填充這個名爲map[][]
的二維數組並嘗試打印出存儲在其中的所有值時,我在每個實際數組字符後都會得到一個空字符。這不應該是這種情況,我希望mapFromJava
數組中的所有字符都與地圖變量中的佈局相同。JNI中的2D C數組
JNIEXPORT void JNICALL Java_CGameLogic_fillMap(JNIEnv *env, jobject thisObj, jobjectArray mapFromJava)
{
jsize len1 = (*env)->GetArrayLength(env, mapFromJava);
int i;
for(i=0; i<len1; i++) {
jcharArray array = (*env)->GetObjectArrayElement(env,mapFromJava, i);
int len2 =(*env)->GetArrayLength(env, array);
jchar *mapArray = (*env)->GetCharArrayElements(env, array, 0);
int size = (sizeof(jchar) * len2);
memcpy(map[i], mapArray, size);
}
}
map是一個2d字符數組。 這是打印功能:
JNIEXPORT void JNICALL Java_CGameLogic_printMap(JNIEnv *env, jobject thisObj, jint mapHeight, jint mapWidth) {
int y;
int x;
for (y = 0; y < mapHeight; y++) {
for (x = 0; x < mapWidth; x++) {
printf("%c", map[y][x]);
}
printf("\n");
}
}
'''map'''的類型是什麼?它應該是'''wchar_t **'''。 –