Revision: | 1.2 |
Committed: | Sun Jun 8 12:03:09 2003 UTC (21 years, 4 months ago) by schorsch |
Content type: | text/plain |
Branch: | MAIN |
CVS Tags: | rad5R2, rad4R2P2, rad5R0, rad5R1, rad3R7P2, rad3R7P1, rad4R2, rad4R1, rad4R0, rad3R6, rad3R6P1, rad3R8, rad3R9, rad4R2P1, rad5R3 |
Changes since 1.1: | +17 -10 lines |
Log Message: | Reduced compile warnings/errors on Windows. |
# | Content |
---|---|
1 | #ifndef lint |
2 | static const char RCSid[] = "$Id: cnt.c,v 1.1 2003/02/22 02:07:20 greg Exp $"; |
3 | #endif |
4 | /* |
5 | * cnt.c - simple counting program. |
6 | * |
7 | * 2/1/88 |
8 | */ |
9 | |
10 | #include <stdlib.h> |
11 | #include <stdio.h> |
12 | |
13 | |
14 | int n[50]; |
15 | char buf[256]; |
16 | |
17 | static void loop(int *n, char *b); |
18 | |
19 | int |
20 | main( |
21 | int argc, |
22 | char *argv[] |
23 | ) |
24 | { |
25 | int a; |
26 | |
27 | argv++; argc--; |
28 | for (a = 0; a < argc; a++) |
29 | n[a] = atoi(argv[a]); |
30 | n[a] = 0; |
31 | loop(n, buf); |
32 | |
33 | exit(0); |
34 | } |
35 | |
36 | |
37 | char * |
38 | tack( |
39 | register char *b, |
40 | register int i |
41 | ) |
42 | { |
43 | register char *cp; |
44 | char *res; |
45 | |
46 | *b++ = '\t'; |
47 | cp = b; |
48 | if (i == 0) |
49 | *cp++ = '0'; |
50 | else |
51 | do { |
52 | *cp++ = i%10 + '0'; |
53 | i /= 10; |
54 | } while (i); |
55 | res = cp--; |
56 | #define c i |
57 | while (cp > b) { /* reverse string */ |
58 | c = *cp; |
59 | *cp-- = *b; |
60 | *b++ = c; |
61 | } |
62 | #undef c |
63 | return(res); |
64 | } |
65 | |
66 | |
67 | static void |
68 | loop( |
69 | int *n, |
70 | char *b |
71 | ) |
72 | { |
73 | int i; |
74 | |
75 | if (n[0] == 0) { |
76 | *b = '\0'; |
77 | puts(buf); |
78 | return; |
79 | } |
80 | for (i = 0; i < n[0]; i++) |
81 | loop(n+1, tack(b, i)); |
82 | } |