blob: 6fea5d6c52fc56607fae75ed203d38b4207d70d6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include <stdio.h>
/* The C Programming Language, 2nd Edition
*
* Exercise 2-2: Write a loop equivalent to the 'for' loop above without
* using && or ||.
*
* (The for loop is:
*
* for (i=0; i < lim - 1 && (c = getchar()) != '\n' && c != EOF)
* i++;
*
* Answer: A recursive function should do the job. I think...
*
*/
#define LIMIT 17
char test[LIMIT] = "";
int i = 0;
int c;
void save_string(char s[]) {
if (i < LIMIT - 1) {
c = getchar();
if (c != '\n') {
if (c != EOF) {
s[i] = c;
i++;
} else {
return;
}
} else {
return;
}
save_string(s);
}
}
int main() {
save_string(test);
printf("%s\n", test);
return 0;
}
|