diff options
Diffstat (limited to '')
-rw-r--r-- | ch2/2-02_no-logical-operators.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/ch2/2-02_no-logical-operators.c b/ch2/2-02_no-logical-operators.c new file mode 100644 index 0000000..6fea5d6 --- /dev/null +++ b/ch2/2-02_no-logical-operators.c @@ -0,0 +1,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; +} |