Tom Seidel: Einige C-Fragen

Beitrag lesen

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.