diff options
| -rw-r--r-- | 5/11.c | 48 |
1 files changed, 25 insertions, 23 deletions
@@ -2,28 +2,36 @@ #include <stdio.h> #include <stdlib.h> -#define MAXTABLIST 10 -#define MAXDIGLEN 10 +#define MAXTAB 10 #define TABSIZE 8 -#define MAXTEXTLEN 500 +#define MAXTEXT 500 +#define MAXTABLIST 10 + +#define GETTEXT(s) \ + ({ \ + int i, c; \ + for (i = 0; i < MAXTEXT && (c = getchar()) != EOF; i++) \ + s[i] = c; \ + s[i] = 0; \ + i; \ + }) -int getinput(char *s, int max); int gettablist(char *s, int *t); void entab(char *s, char *t, int *tablist, int tablistc); void detab(char *s, char *t, int *tablist, int tablistc); int main(int argc, char *argv[]) { int colv[MAXTABLIST], colc; - char op, s[MAXTEXTLEN], t[MAXTEXTLEN]; + char op, s[MAXTEXT], t[MAXTEXT]; if ((argc != 2 && argc != 3) || ((op = argv[1][1]) != 'e' && op != 'd')) { - printf("usage: -e 5,3...\n"); + printf("Usage: -e 5,3...\n"); return 1; } if (argc == 3) { if (!(colc = gettablist(argv[2], colv))) { - printf("error: invalid tablist\n"); + printf("Error: invalid tablist\n"); return 1; } } else { @@ -31,8 +39,11 @@ int main(int argc, char *argv[]) { colc = 1; } - printf("enter text to %s and press CTRL+D\n", op == 'e' ? "entab" : "detab"); - getinput(s, MAXTEXTLEN); + printf("Enter text to %s and press CTRL+D\n", op == 'e' ? "entab" : "detab"); + if (!GETTEXT(s)) { + printf("Did not receive text!\n"); + return 0; + } switch (op) { case 'e': @@ -42,7 +53,7 @@ int main(int argc, char *argv[]) { // detab(s, t, colv, colc); break; default: - printf("error: invalid operation.\n"); + printf("Error: invalid operation.\n"); return 1; } @@ -52,11 +63,11 @@ int main(int argc, char *argv[]) { int gettablist(char *s, int *t) { int i, j, k; - char col[MAXDIGLEN]; + char col[MAXTAB]; for (i = 0, j = 0, k = 0; j < MAXTABLIST; i++) { - if (k >= MAXDIGLEN) { - printf("error: tablist entry too large\n"); + if (k >= MAXTAB) { + printf("Error: tablist entry too large\n"); return 0; } @@ -70,19 +81,10 @@ int gettablist(char *s, int *t) { } else if (isdigit(s[i])) col[k++] = s[i]; else { - printf("error: invalid char %c in tablist\n", s[i]); + printf("Error: invalid char %c in tablist\n", s[i]); return 0; } } return j; } - -int getinput(char *s, int max) { - int i, c; - - for (i = 0; i < max && (c = getchar()) != EOF; i++) - s[i] = c; - s[i] = 0; - return i; -}
\ No newline at end of file |
