Funktion gesucht: str2double
-
Finde ich schlecht umgesetzt, da alle anderen ato Funtionen als letzten Buchstaben den Datentyp beschreiben...
-
atof = ascii to float. Noch von K&R
strtod = string to double. ANSI CDie ato_- funktionen sollte man auch meiden, da man einen Fehler nicht erkennen kann bzw. das Verhalten undefiniert ist.
-
Binggi schrieb:
Hab gerade gesehen, dass es auch atoff gibt
...
Wobei nicht das nicht strict ANSI ist.Wo? Wo??
-
Ich habe in der stdlib.h von Cygwin mal nachgeschaut was es da alles exotisches gibt...
-
Hier ist eine, sogar standardkonform:
#include <stdlib.h> #include <errno.h> int str2double(const char *s,double *d) { /* return 0 -> Fehler aufgetreten, sonst erfolgreich */ char *e; errno=0; *d=strtod(s,&e); return *s&&!*e&&!errno; }
-
return *s&&!*e&&!errno;
Der Code lässt C Herzen höher schlagen...
-
Binggi schrieb:
return *s&&!*e&&!errno;
Der Code lässt C Herzen höher schlagen...
-
Binggi schrieb:
return *s&&!*e&&!errno;
Der Code lässt C Herzen höher schlagen...
Ein bißchen Whitespace und iso646.h, und da steht:
return *s and not *e and not errno;
Das ist so schlimm?
-
lovepulse schrieb:
Hallo zusammen,
wer kennt eine Lib mit der ich in ANSI C einen String in einen Double Wert konvertieren kann?
Casten geht ja nicht...
Grüße, KO
So geht's auch:
#include <stdio.h> int main(void) { char str[] = "15.6777777777"; double test; if (sscanf(str, "%lf", &test) == 1) printf("String in double konvertiert: double test = %.10lf\n", test); return 0; }
-
*scanf nehmen prinzipiell keine Über/Unterlaufprüfungen für numerische Werte vor, geben aber trotzdem OK für die Zuweisung zurück.