fcvt() -> dezimalpunkt fehlt

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
klaus
Beiträge: 102
Registriert: 09.06.2003 11:32:10

fcvt() -> dezimalpunkt fehlt

Beitrag von klaus » 07.03.2006 14:13:14

Moin,

Ich möchte Daten in einem c-Programm Daten in einer csv-Datei
speichern. In diesem Fall handelt es sich um double-Werte.
Dazu habe ich die Funktion fcvt verwendet, und speicher sie dann
mit fputs() in der Datei, leider gibt sie nicht den Dezimalpunkt wieder.

Code: Alles auswählen

	buffer = fcvt (dat->temp30, 1, &decimal, &sign);//float to string
	fputs(buffer,csvDatei);
	fputc(';',csvDatei);//temp30
Ich habe weder sign noch decimal einen Wert übergeben!!!
Was mache ich falsch oder kann ich vielleicht direkt double-Werte
in die Datei speichern?

Vielen Dank
Bin leider immer noch kein guter Programmierer
Matthias

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 07.03.2006 15:42:55

Wo hast du die Funktion denn ausgegraben?
man fcvt hat geschrieben:The string itself does not contain a decimal point; however, the position of the decimal point relative to the start of the string is stored in *decpt.
[...]
These functions are obsolete. Instead, sprintf() is recommended.
mit snprintf ist es viel angenehmer ;)

Code: Alles auswählen

char buffer[50];
snprintf(&buffer, 50, "%f", dat->temp30);
snprintf ist sprintf vorzuziehen, da kein Bufferoverflow auftreten kann (solange du die richtige Größe angibst)

Antworten