C-Kurs/String to Double: Unterschied zwischen den Versionen
< C-Kurs
(Aufgabe zur API von strtod v1) |
(kein Unterschied)
|
Version vom 2. September 2010, 12:45 Uhr
Mithilfe der Funktion strtod aus dem Header <stdlib.h> lassen sich aus Strings wie "3.456" Werte vom Typ double extrahieren. Die Verwendung dieser Funktion ist nicht ganz einfach und will geübt sein. Ihr Prototyp lautet wie folgt:
double strtod(const char *nptr, char **endptr);
Wie das zweite Parameter zu verwenden ist, erschließt sich aus der Manpage (siehe strtod-Seite der Opengroup und # LC_ALL= man strtod auf der Konsole) und aus oberflächlichem Verständnis der internen Funktionsweise.
(1) Mit diesem Wissen sollst du folgendes Programm vervollständigen:
#include <stdio.h> /* for printf */ int string_to_double(char const *text, double *output) { /* IMPLEMENT ME */ } int main() { double d; int const error = string_to_double("4.567", &d); printf("Error: %s\n" "Result: %f\n", error ? "yes" : "no", d); return 0; }
(2) Zusatzfrage: Wie sieht es mit der const correctness von strtod aus? An welchen Stellen fehlt eigentlich ein const? Wie sähe dann der korrekte Prototyp aus?