Andreas Pflug: Zahlenformatierung in C

Beitrag lesen

[...] 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