fork download
  1. #include <stdio.h>
  2. #include <setjmp.h>
  3.  
  4. int abs(int value) {
  5. jmp_buf buf;
  6. char buffer[16];
  7. snprintf(buffer, sizeof(buffer), "%d+", value);
  8. char *cursor = buffer;
  9. switch (setjmp(buf)) {
  10. case 0:
  11. ++cursor;
  12. longjmp(buf, *cursor);
  13. case '-':
  14. *cursor = ' ';
  15. ++cursor;
  16. longjmp(buf, *cursor);
  17. case '+':
  18. *cursor = '\0';
  19. sscanf(buffer, "%d", &value);
  20. return value;
  21. default:
  22. ++cursor;
  23. longjmp(buf, *cursor);
  24. }
  25. }
  26.  
  27. int main(void) {
  28. int value;
  29. while (1 == scanf("%d", &value)) {
  30. printf("%d\n", abs(value));
  31. }
  32. return 0;
  33. }
  34.  
Success #stdin #stdout 0s 2164KB
stdin
3
-60
60
120
-120
stdout
3
60
60
120
120