Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- int stringToDouble(const char* string, double* result)
- {
- /* erstes Zeichen muss Ziffer, Minuszeichen oder das Komma sein */
- if((*string < '0' || *string > '9') && *string != '.' && *string != '-')
- {
- return -1;
- }
- /* String wandeln */
- char* endPointer;
- double value = strtod(string, &endPointer);
- /* endPointer zeigt hinter den double im String -> hier muss 0 sein (Stringende) */
- if(*endPointer != 0)
- {
- return -2;
- }
- /* Ergebnis speichern */
- *result = value;
- return 0;
- }
- int main()
- {
- {
- double d = 0.0;
- int error = stringToDouble("123.456", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- {
- double d = 0.0;
- int error = stringToDouble("-123.456", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- {
- double d = 0.0;
- int error = stringToDouble("-.1E1", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- {
- double d = 0.0;
- int error = stringToDouble("-.1E-1", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- {
- double d = 0.0;
- int error = stringToDouble(" 123.456", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- {
- double d = 0.0;
- int error = stringToDouble("a123.456", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- {
- double d = 0.0;
- int error = stringToDouble("123.456 ", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- {
- double d = 0.0;
- int error = stringToDouble("123.456a", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- {
- double d = 0.0;
- int error = stringToDouble(" 123.456 ", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- {
- double d = 0.0;
- int error = stringToDouble("a123.456a", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- {
- double d = 0.0;
- int error = stringToDouble(".5", &d);
- printf("Returncode: %d - Double: %f\n", error, d);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement