fork(1) download
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <climits>
  4. using namespace std;
  5.  
  6. static int test(const char *p) {
  7. char *endptr;
  8. const long int argument = strtol (p, &endptr, 10); // <cstdlib>
  9. if(endptr[0] != '\0') {
  10. cerr<< p << ": arguments must be integer" << endl;
  11. return -1;
  12. } else if (argument == LONG_MIN || argument == LONG_MAX) { // <climits>
  13. // Alternatively you can check for ERANGE in errno
  14. cerr<< p << ": arguments value is out of range" << endl;
  15. return -1;
  16. } else {
  17. /* Right type of argument received */
  18. cout << p << " parsed as integer" << endl;
  19. return 0;
  20. }
  21. }
  22.  
  23. int main() {
  24. char inp[128];
  25. while(cin >> inp) {
  26. test(inp);
  27. }
  28. return 0;
  29. }
Success #stdin #stdout #stderr 0s 4368KB
stdin
-1 aasmsnsak 42 1111111111111111111111111111111111111 -1111111111111111111111111111111111111 12345678 -98765432 42test test42 0 01
stdout
-1 parsed as integer
42 parsed as integer
12345678 parsed as integer
-98765432 parsed as integer
0 parsed as integer
01 parsed as integer
stderr
aasmsnsak: arguments must be integer
1111111111111111111111111111111111111: arguments value is out of range
-1111111111111111111111111111111111111: arguments value is out of range
42test: arguments must be integer
test42: arguments must be integer