Seq.c
от ILuxWiki
Програма за sequence - последователности.
Във freebsd-то по някаква причина липсва този инструмент. Възможно е да го има в някой порт, но реших 'за спорта' да си го напиша сам. seq
BUGS
- работи само с int стойности.
- възможно и други, не е тествана с произволни параметри.
Код: seq.c
#include <stdio.h>
#include <stdlib.h>
void usage()
{
fprintf(stderr, "Usage: seq LAST\n");
fprintf(stderr, " or: seq FIRST LAST\n");
fprintf(stderr, " or: seq FIRST INCREMENT LAST\n");
fprintf(stderr, "Print numbers from FIRST to LAST, in steps of INCREMENT.\n");
exit(1);
}
int a2i(char *ch)
{
int i;
if ( !(i = strtol(ch, (char **)NULL, 10)) ) {
usage();
}
return i;
}
void print_seq(int f, int i, int l) {
while (f <= l) {
printf("%i\n", f);
f += i;
}
}
int main(int argc, char **argv) {
int c = argc - 1;
char *bp;
int first = 1, increment = 1 , last = 0;
switch (c) {
case 1:
last = a2i(argv[1]);
break;
case 2:
first = a2i(argv[1]);
last = a2i(argv[2]);
break;
case 3:
first = a2i(argv[1]);
increment = a2i(argv[2]);
last = a2i(argv[3]);
break;
default:
usage();
break;
}
print_seq(first, increment, last);
return 0;
}

