gdritter repos GRUtils / 6305a37
Improvements to expseq help text Getty Ritter 10 years ago
1 changed file(s) with 21 addition(s) and 11 deletion(s). Collapse all Expand all
22 #include <stdio.h>
33 #include <stdlib.h>
44
5 #define HELPMSG "USAGE: expseq LAST\n or: expseq FIRST LAST\n or: expseq --help\n"\
6 "Print numbers 2^FIRST to 2^LAST in exponential steps.\n\n"\
7 "If FIRST is omitted, it defaults to 0.\n"
8
59 int main(int argc, char* argv[])
610 {
7 int fstnum = 0, lstnum;
11 int fstnum = 0, lstnum, i;
812 if (argc == 2) {
9 char* endptr = argv[1];
10 lstnum = strtol(argv[1], &endptr, 10);
11 if (!endptr) {
12 fprintf(stderr, "%s: non-numeric arg: %s\n", argv[0], argv[1]);
13 return 0;
14 }
13 if (strcmp(argv[1], "--help")==0
14 || strcmp(argv[1], "-h")==0) {
15 fprintf(stderr, HELPMSG);
16 return 1;
17 } else {
18 char* endptr = argv[1];
19 lstnum = strtol(argv[1], &endptr, 10);
20 if (!endptr) {
21 fprintf(stderr, "%s: non-numeric arg: %s\n", argv[0], argv[1]);
22 return 1;
23 }
24 }
1525 } else if (argc == 3) {
1626 char* endptr = argv[1];
1727 fstnum = strtol(argv[1], &endptr, 10);
1828 if (!endptr) {
1929 fprintf(stderr, "%s: non-numeric arg: %s\n", argv[0], argv[1]);
20 return 0;
30 return 1;
2131 }
2232 endptr = argv[2];
2333 lstnum = strtol(argv[2], &endptr, 10);
2434 if (!endptr) {
2535 fprintf(stderr, "%s: non-numeric arg: %s\n", argv[0], argv[2]);
26 return 0;
36 return 1;
2737 }
2838 } else {
2939 fprintf(stderr, "%s: missing operand\n", argv[0]);
30 return 0;
40 return 1;
3141 }
32 int i = fstnum;
42 i = fstnum;
3343 while (i <= lstnum) {
3444 printf("%d\n", (int) pow(2, (float) i));
3545 i++;