From e5c621afcede4f2191158a0d1b4689035efc539f Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Tue, 25 Jan 2022 18:22:26 +0800 Subject: 5.11 --- 5/11.c | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to '5/11.c') diff --git a/5/11.c b/5/11.c index dfd6422..9db3375 100644 --- a/5/11.c +++ b/5/11.c @@ -1,3 +1,4 @@ +#include #include #include @@ -16,7 +17,7 @@ int main(int argc, char *argv[]) { char op, s[MAXTEXTLEN], t[MAXTEXTLEN]; 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; } @@ -27,7 +28,7 @@ int main(int argc, char *argv[]) { colc = 1; } - printf("Enter text to %s and press CTRL+D\n", op == 'e' ? "entab" : "detab"); + printf("enter text to %s and press CTRL+D\n", op == 'e' ? "entab" : "detab"); gettext(s, MAXTEXTLEN); switch (op) { @@ -38,7 +39,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; } @@ -46,11 +47,36 @@ int main(int argc, char *argv[]) { return 0; } +int gettabs(char *s, int *t) { + int i, j, k; + char col[MAXDIGLEN]; + + for (i = 0, j = 0, k = 0; j < MAXTABLIST && k < MAXDIGLEN && s[i] != 0; i++) { + if (s[i] == ' ' || s[i] == ',') { + t[j++] = atoi(col); + col[0] = 0; + k = 0; + } else if (isdigit(s[i])) + col[k++] = s[i]; + else { + printf("error: invalid char in tablist\n"); + return 0; + } + } + + if (k >= MAXDIGLEN) { + printf("error: column number too large\n"); + return 0; + } + + return j; +} + int gettext(char *s, int max) { int i, c; for (i = 0; i < max && (c = getchar()) != EOF; i++) s[i] = c; - s[i] = 0; + s[i] = 0; return i; } \ No newline at end of file -- cgit v1.2.3