Teile vom Array übergeben

melmager

Erfahrenes Mitglied
Erstmal vorweg ich habe zwar das dicke C Buch hier liegen aber noch keine Ahnung von C
ich befasse mich erstmal mit Java :-)
Nun möchte ich Java und C verbinden und komme da sehr ins schleudern

Code:
JNIEXPORT jbyteArray JNICALL Java_Ctapi_ctdata
  (JNIEnv *env, jobject obj, jint jctn, jbyteArray jbuffer)
{
  unsigned short ctn,lc,lr;
  char re;
  unsigned char *dad,*sad,*cmd,*res;
  jbyteArray jb;
  jsize exlen;
  jsize len = (*env)->GetArrayLength(env, jbuffer);
  jbyte *body = (*env)->GetByteElements(env, jbuffer, 0);

  re = CT_data(ctn,&dad,&sad,lc,cmd,&lr,res);

// create byte array
  jb=(*env)->NewByteArray(env, exlen);
// fill data from buf
  (*env)->SetByteArrayRegion(env, jb, 0, exlen);
  (*env)->ReleaseByteArray(env , jbuffer, body, 0);
  return jb;
}

Das ist eine JNI Funktion die stellt die Schnittstelle zu Java her.
Von Java bekomme ich ein Array aus Bytes (sollte identisch mit Char sein)
im body habe ich mein Input Array - so weit so gut
die ersten 4 Inhalte soll zu den Variablen ctn,dad,sad und lc werden auch noch nicht wild.

Jezt kommt der Punkt wo es stockt cmd soll ein char array werden und in lc oder body[3]
steht drin wiewiele werte als array cmd übergeben werden müssen.

Zwei Möglichkeiten sehe ich:
Ein Array dynamisch anlegen und ein Teilbereich umcopieren oder ein Teil des Array von Body übergeben.

bei Beiden Versionen komme ich nicht klar wie das gehen soll

Ich glaube auch die Teileübergabe währe eleganter oder?
 
Zuletzt bearbeitet:
Du kannst einfach über pointer-Arithmetik einen neuen Array erstellen. Übergib einfach einen Zeiger auf das erste Element des Teilarrays - diesen Zeiger kannst du dann einfach wie ein Array verwenden.

Korrigiert mich bitte wenn ich mich täusche - es ist so lange her.
 
Zurück