Probleme bei Funktionsaufruf
-
Hallo zusammen
Ich habe folgendes konstrukt:
struct Data{ char name[MAX_PROVIDER_LEN]; u_short a; u_short b; }; typedef struct Data Data;
Desweiteren habe ich folgende Funktion:
bool_t xdr_string (char **cpp, u_int maxsize){ char *sp = *cpp; . . .
Ich habe ein Objekt vom Typ Data erzeugt das über den Pointer objp zugreifbar ist. Nun will ich den String in Data der Funktion übergeben, das mache ich folgendermassen:
xdr_string ( &objp->name, MAX_NAME_LEN))
Nur funktioniert das leider nicht, in sp sthet dann eine total falsche Adresse! Sieht irgendwer hier den Fehler?
Gruss und Danke
Kurtli
-
adressen von arrays als char** zu übergeben, ist nicht gut. arrays sind nun mal keine pointer. übergibt doch einen einfachen char*, oder was bezweckst du damit?
-
Ja da hast du schon recht, nur sind diese xdr Funktionen nicht von mir sondern werden generisch generiert, daher ist es eine Änderung nur mit grossem Aufwand möglich. Aber so rein theoretisch sollte es doch gehen, oder?
-
rein theoretisch solltest du der funktion einen pointer auf einen pointer geben, damit sie ihn eventuell verändern kann.
char *p = objp->name; xdr_string (&p, MAX_NAME_LEN));