Moin!
[...]
Danke für die vorherigen Erklärungen.
#define PUFFERGROESSE 200
// ...
// Ein Array mit 3 char*-Pointern allozieren
char **output = (char **)malloc(sizeof(char *)*3);
int i;
// Nun im Array 3 Puffer anlegen
for (i = 0; i < 3; i++) {
output[i] = (char *)malloc(PUFFERGROESSE);
}
// Nun übergeben
func (15, output, PUFFERGROESSE);// nun irgendwas mit output machen
// Nun wieder loswerden
for (i = 0; i < 3; i++) {
free (output[i]);
}
free (output);
Mit diesen Beispielcode habe ich es nun geschafft. Über einen kleinen Punkt bin ich aber noch hängengeblieben:
Ich wollte folgendes machen:
output[0] = name; // name ist dabei vom Typ char \*
Dies führt aber stets zu komischen Ergebnissen. Mit strcpy(output[0], name) hat es dagegen funktioniert. Wann muss man also strcpy benutzen und kann nicht direkt die Strings einanderzuweisen?
> [1] In PHP (Scriptsprache!) gibt's ein sprintf(), das eine Zeichenkette \*zurückgibt\*, das ist aber in der internen C-Implementierung relativ komplex gebaut (und es gibt in der C-Standardbibliothek kein Äquivalent dafür), verwechselst Du das evlt. damit?
Ja, das war der Fehler u.a.