Moin,
ein Frage zu snprintf(). Und zwar möchte ich double Werte mit
snprintf in eine .csv-Datei ausgeben, und zwar am besten mit
dem Komma als Dezimalzeichen
Kann man irgendwo die Region oder den Zeichensatz unter C einstellen?
Vielen Dank
Matthias
snprintf(%0.1) mit Dezimal-"Komma" ?
geht mit setlocale, hat aber auch den Nachteil, daß die entsprechende locale generiert sein muß.
Gruß
gms
Code: Alles auswählen
root@gms4:~# cat x.c
#include <stdio.h>
#include <locale.h>
int main() {
double n=3.1415926;
char szBuffer[1024];
if (!setlocale(LC_NUMERIC,"de_AT@euro"))
fprintf(stderr,"failed to set locale to \"de_AT@euro\"\n");
snprintf(szBuffer,1024,"%f",n);
printf ("%s\n",szBuffer);
if (!setlocale(LC_NUMERIC,"C"))
fprintf(stderr,"failed to set locale to \"C\"\n");
snprintf(szBuffer,1024,"%f",n);
printf ("%s\n",szBuffer);
}
root@gms4:~# gcc -o x x.c
root@gms4:~# ./x
3,141593
3.141593
gms
MOin gms,
Danke für die schnelle Hilfe,
die Kommas werden nun ausgegeben,
aber leider ist die erste Stelle nach dem Komma
immer 0, (was aber nicht immer stimmt).
Was ist daran falsch?!
Vielden Dank
Matthias
Danke für die schnelle Hilfe,
die Kommas werden nun ausgegeben,
aber leider ist die erste Stelle nach dem Komma
immer 0, (was aber nicht immer stimmt).
Code: Alles auswählen
snprintf(filebuffer, 500,"\n%d;%d;"
"%0.1f;%0.1f;%0.1f;%0.1f;%0.1f;"
"%0.1f;%0.1f;%0.1f;%0.1f;%0.1f;%0.1f;%0.1f;",
dat->tdj,stundevoranstieg,
dat->temp30,dat->feuchte30,dat->benetzung,dat->niederschlag,tempsumme,
F0,F1,F2,F3,F4,F5,F6);
Vielden Dank
Matthias