0
はJavaの次スニペットはC関数を呼び出します:cでの印刷配列がjavaから渡されました:なぜ配列が印刷されませんか?
Javaコードを
String s[] = new String[10];
for(int i=0;i<10;i++) {
s[i] = "s";
}
o.printArrayLength(s); // prints the array length from c code
Cコード:上記の私は、次を参照してください起こる
void Java_Package_CallMethodOfSuperClass_printArrayLength
(JNIEnv *env, jobject obj, jobjectArray arr) {
jsize size = (*env)->GetArrayLength(env,arr);
printf("\n");
printf("Size of array from C : ");
printf("%d",size);
jcharArray chrArr = (*env)->GetCharArrayElements(env,arr,NULL);
char Arr[11];
strcpy(Arr,chrArr);
int i = 0;
printf("Now printing the array declared in java from c :");
printf("SIZE SIZE SIZE SIZE : %d",size);
for(i=0;i<size;i++) {
printf("Inside for loop !");
printf("%s",Arr[i]);
}
//jobjectArray obArr = (*env)->NewObjectArray(env,size,(*env)->FindClass(env,"[L"),NULL);
//(*env)->SetObjectArrayElement(env,obArr,0,chrArr);
}
出力:
Size of array from C : 10
Now printing the array declared in java from c :
SIZE SIZE SIZE SIZE : -549339085 // What the heck !
なぜ10の値と異なるサイズの値が得られますか?値10は、1行前に印刷されます。
次はforループのチェックを10にしておくと、配列も印刷されません。どうしてこれなの ?代わりに私は致命的なエラーを取得します。
私はできません。助けてもらえますか? –