fork(6) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4.  
  5. double get_double(const char *str)
  6. {
  7. /* First skip non-digit characters */
  8. /* Special case to handle negative numbers */
  9. while (*str && !(isdigit(*str) || ((*str == '-' || *str == '+') && isdigit(*(str + 1)))))
  10. str++;
  11.  
  12. /* The parse to a double */
  13. return strtod(str, NULL);
  14. }
  15.  
  16. int main(void)
  17. {
  18. char input1[] = "fasfasf-123.412412fasfff";
  19. char input2[] = "fasf-asf123.412412fasfff";
  20. char input3[] = "fasfasf-123.412412fasfff";
  21. char input4[] = "fasf+asf123.412412fasfff";
  22. char input5[] = "fasfasf+123.412412fasfff";
  23.  
  24. printf("Input1 1: \"%s\"\n", input1);
  25. printf("Double 1: %.10g\n", get_double(input1));
  26. printf("Input 2: \"%s\"\n", input2);
  27. printf("Double 2: %.10g\n", get_double(input2));
  28. printf("Input 3: \"%s\"\n", input3);
  29. printf("Double 3: %.10g\n", get_double(input3));
  30. printf("Input 4: \"%s\"\n", input4);
  31. printf("Double 4: %.10g\n", get_double(input4));
  32. printf("Input 5: \"%s\"\n", input5);
  33. printf("Double 5: %.10g\n", get_double(input5));
  34.  
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0.01s 1720KB
stdin
Standard input is empty
stdout
Input1 1: "fasfasf-123.412412fasfff"
Double 1: -123.412412
Input  2: "fasf-asf123.412412fasfff"
Double 2: 123.412412
Input  3: "fasfasf-123.412412fasfff"
Double 3: -123.412412
Input  4: "fasf+asf123.412412fasfff"
Double 4: 123.412412
Input  5: "fasfasf+123.412412fasfff"
Double 5: 123.412412