From ea5d3be32de1acb35a95d8043c81dafc033e3474 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Tue, 18 Jan 2022 19:58:13 +0800 Subject: 5.11 --- 5/11.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to '5') diff --git a/5/11.c b/5/11.c index e40a051..0399526 100644 --- a/5/11.c +++ b/5/11.c @@ -3,11 +3,13 @@ #define TABSIZE 8 #define MAXLEN 1000 +#define COLCOUNT 100 void entab(char *s, char *t, int *tablist, int tablistc); int main(int argc, char *argv[]) { - int colc, *tablist, *tablistp; + int colsize; + int tablistc, *tablist, *tablistp; char *s, *col, *colp, *colstr; s = malloc(sizeof(char) * MAXLEN); @@ -18,19 +20,27 @@ int main(int argc, char *argv[]) { tablist = malloc(sizeof(int)); tablist[0] = 8; } else { - tablist = malloc(sizeof(int) * 100); + tablist = malloc(sizeof(int) * COLCOUNT); tablistp = tablist; - for (colstr = argv[1]; *colstr != 0; colstr++) { + for (colstr = argv[1], tablistc = 0; *colstr != 0; colstr++) { if (*colstr == '"') continue; if (*colstr == ',' || *colstr == ' ') { - // todo: realloc based on colc - colc++; + tablistc++; + if (tablistc != 1 && tablistc % COLCOUNT == 1) { + tablist = realloc(tablist, sizeof(int) * COLCOUNT); + if (tablist == NULL) { + printf("error: realloc\n"); + free(tablist); + return 1; + } + } *colp++ = 0; colp = col; *tablistp = atoi(col); tablistp++; } else { + // todo: realloc based on colc *colp++ = *colstr; } } -- cgit v1.2.3