fork download
  1. #include <stdio.h>
  2.  
  3. int SumStr(const char *str) { // added const
  4. int sum = 0, digit = 0; // removed i
  5. while (*str) {
  6. digit = 0;
  7. while (*str && *str >= '0' && *str <= '9') { // swapped order of conditions
  8. digit = digit * 10 + (*str - '0');
  9. str++;
  10. }
  11. if (digit > 0) sum += digit;
  12. else str++; // added else
  13. }
  14. return sum;
  15. }
  16.  
  17. int main(void) {
  18. char s[42];
  19. strcpy(s, "a11b3"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  20. strcpy(s, ""); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  21. strcpy(s, "4"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  22. strcpy(s, "42"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  23. strcpy(s, "f"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  24. strcpy(s, "fo"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  25. strcpy(s, "7foo"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  26. strcpy(s, "73foo"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  27. strcpy(s, "foo9"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  28. strcpy(s, "foo10"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  29. strcpy(s, "1foo8"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  30. strcpy(s, "12foo4"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  31. strcpy(s, "1foo16"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  32. strcpy(s, "712foo3"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  33. strcpy(s, "foo5bar"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  34. strcpy(s, "foo88bar"); printf("SumStr(\"%s\") is %d.\n", s, SumStr(s));
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0s 9432KB
stdin
Standard input is empty
stdout
SumStr("a11b3") is 14.
SumStr("") is 0.
SumStr("4") is 4.
SumStr("42") is 42.
SumStr("f") is 0.
SumStr("fo") is 0.
SumStr("7foo") is 7.
SumStr("73foo") is 73.
SumStr("foo9") is 9.
SumStr("foo10") is 10.
SumStr("1foo8") is 9.
SumStr("12foo4") is 16.
SumStr("1foo16") is 17.
SumStr("712foo3") is 715.
SumStr("foo5bar") is 5.
SumStr("foo88bar") is 88.