Print the arguments to a program and convert to integer values
suggest changeThe following code will print the arguments to the program, and the code will attempt to convert each argument into a number (to a long):
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <limits.h>
int main(int argc, char* argv[]) {
for (int i = 1; i < argc; i++) {
printf("Argument %d is: %s\n", i, argv[i]);
errno = 0;
char *p;
long argument_numValue = strtol(argv[i], &p, 10);
if (p == argv[i]) {
fprintf(stderr, "Argument %d is not a number.\n", i);
}
else if ((argument_numValue == LONG_MIN || argument_numValue == LONG_MAX) && errno == ERANGE) {
fprintf(stderr, "Argument %d is out of range.\n", i);
}
else {
printf("Argument %d is a number, and the value is: %ld\n",
i, argument_numValue);
}
}
return 0;
}
REFERENCES:
- http://stackoverflow.com/questions/5493235/strtol-returns-an-incorrect-value
- http://stackoverflow.com/questions/14176123/correct-usage-of-strtol
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents