fork download
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <assert.h>
  4.  
  5. void convert(const char *in, char *out) {
  6. unsigned int sum = 0;
  7. char ch;
  8. do {
  9. ch = *in++;
  10. if (isdigit(ch)) {
  11. sum += ch - '0';
  12. } else {
  13. *out++ = sum / 10 + '0';
  14. *out++ = sum % 10 + '0';
  15. if (ch == '.') {
  16. *out++ = '.';
  17. sum = 0;
  18. }
  19. }
  20. } while (ch);
  21. }
  22.  
  23. main() {
  24. /*
  25.   stream version:
  26.  
  27.   unsigned int sum = 0;
  28.   int ch;
  29.   do {
  30.   ch = getchar();
  31.   if (isdigit(ch)) {
  32.   sum += ch - '0';
  33.   } else {
  34.   putchar(sum / 10 + '0');
  35.   putchar(sum % 10 + '0');
  36.   if (ch == '.') {
  37.   putchar('.');
  38.   sum = 0;
  39.   }
  40.   }
  41.   } while (ch != EOF);
  42.  */
  43.  
  44. char buf[16] = { 0 };
  45. convert("112.234.456.789", buf);
  46. assert(!strcmp(buf, "04.09.15.24"));
  47. return 0;
  48. }
Success #stdin #stdout 0.01s 1716KB
stdin
112.234.456.789
stdout
Standard output is empty