[...] Hat allerdings den Nachteil, daß ich sowas hier nicht machen kann
printf("x1 = %s, x2 = %s", myfunc(x1), myfunc(x2));
> weil der Speicher durch den zweiten Funktionsaufruf direkt überschrieben wird.
Eine Quick&Dirty-Lösung wäre, ein endliches Array von char\* - Pointern zu verwenden, etwa
~~~c
/* ... */
char *table[N];
static int table_counter=0;
/* ... */
N muss dabei mindestens so groß sein wie die maximale Anzahl von Formatfunktionsaufrufen in einem printf. Deine Funktion würde in etwa so aussehen:
char *myfunc(double x) {
table_counter %= N;
/* formatiere x irgendwie in table[table_counter] hinein,
der Speicherplatz dafür sollte natürlich vorher irgendwo
reserviert worden sein... */
return table[table_counter++];
}
Das ganze ist natürlich eher gefrickelt und schon gar nicht thread-safe...
MfG
Andreas