Advertisement
Guest User

Untitled

a guest
Dec 17th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.95 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int stringToDouble(const char* string, double* result)
  5. {
  6.     /* erstes Zeichen muss Ziffer, Minuszeichen oder das Komma sein */
  7.     if((*string < '0' || *string > '9') && *string != '.' && *string != '-')
  8.     {
  9.         return -1;
  10.     }
  11.  
  12.     /* String wandeln */
  13.     char* endPointer;
  14.     double value = strtod(string, &endPointer);
  15.  
  16.     /* endPointer zeigt hinter den double im String -> hier muss 0 sein (Stringende) */
  17.     if(*endPointer != 0)
  18.     {
  19.         return -2;
  20.     }
  21.  
  22.     /* Ergebnis speichern */
  23.     *result = value;
  24.     return 0;
  25. }
  26.  
  27. int main()
  28. {
  29.     {
  30.         double d = 0.0;
  31.         int error = stringToDouble("123.456", &d);
  32.         printf("Returncode: %d - Double: %f\n", error, d);
  33.     }
  34.  
  35.     {
  36.         double d = 0.0;
  37.         int error = stringToDouble("-123.456", &d);
  38.         printf("Returncode: %d - Double: %f\n", error, d);
  39.     }
  40.  
  41.     {
  42.         double d = 0.0;
  43.         int error = stringToDouble("-.1E1", &d);
  44.         printf("Returncode: %d - Double: %f\n", error, d);
  45.     }
  46.  
  47.     {
  48.         double d = 0.0;
  49.         int error = stringToDouble("-.1E-1", &d);
  50.         printf("Returncode: %d - Double: %f\n", error, d);
  51.     }
  52.  
  53.     {
  54.         double d = 0.0;
  55.         int error = stringToDouble(" 123.456", &d);
  56.         printf("Returncode: %d - Double: %f\n", error, d);
  57.     }
  58.  
  59.     {
  60.         double d = 0.0;
  61.         int error = stringToDouble("a123.456", &d);
  62.         printf("Returncode: %d - Double: %f\n", error, d);
  63.     }
  64.  
  65.     {
  66.         double d = 0.0;
  67.         int error = stringToDouble("123.456 ", &d);
  68.         printf("Returncode: %d - Double: %f\n", error, d); 
  69.     }
  70.    
  71.     {
  72.         double d = 0.0;
  73.         int error = stringToDouble("123.456a", &d);
  74.         printf("Returncode: %d - Double: %f\n", error, d);
  75.     }
  76.  
  77.     {
  78.         double d = 0.0;
  79.         int error = stringToDouble(" 123.456 ", &d);
  80.         printf("Returncode: %d - Double: %f\n", error, d);
  81.     }
  82.  
  83.     {
  84.         double d = 0.0;
  85.         int error = stringToDouble("a123.456a", &d);
  86.         printf("Returncode: %d - Double: %f\n", error, d);
  87.     }
  88.  
  89.     {
  90.         double d = 0.0;
  91.         int error = stringToDouble(".5", &d);
  92.         printf("Returncode: %d - Double: %f\n", error, d);
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement