Konwertowanie tablicy jbyteArray na tablicę znaków, a następnie drukowanie do konsoli

Piszę program JNI, w którym mój plik .cpp pobiera tablicę jbyteArray i chcę móc wydrukować jbyteArray za pomocą printf. Aby tak się stało, uważam, że muszę przekonwertować tablicę jbyteArray na tablicę znaków.

Dla wiedzy w tle strona java mojego JNI konwertuje ciąg znaków na bajtArray, a następnie ten bajtArray jest przekazywany jako argument do mojej funkcji JNI.

To, co do tej pory zrobiłem, wypisuje poprawnie String, ale po nim następują postacie śmieciowe i nie wiem, jak się ich pozbyć / jeśli robię coś złego.

Oto, czym jest String:

dsa

i co drukuje na konsoli:

dsa,�

Znaki śmieci zmieniają się w zależności od tego, czym jest String. Oto część kodu, która jest odpowiednia:

plik .java:

public class tcr extends javax.swing.JFrame{

static{
    System.loadLibrary("tcr");
}

public native int print(byte file1[]);

    .....

    String filex1 = data1TextField.getText();//gets a filepath in the form of a String from a GUI jtextfield.
    byte file1[]= filex1.getBytes();//convert file path from string to byte array

        tcr t = new tcr();
        t.print(file1);
}

kod .cpp:

JNIEXPORT jint JNICALL Java_tcr_print(JNIIEnv *env, jobject thisobj, jbyteArray file1){

    jboolean isCopy;
    jbyte* a = env->GetByteArrayElements(file1,&isCopy);
    char* b;
    b = (char*)a;
    printf("%s\n",b);
}

Każda pomoc byłaby doceniana.

questionAnswers(2)

yourAnswerToTheQuestion