/* Compare to dbl.c. */ #include #include int chararray_append(char **a,int *aspace,int *alen,char c) { if (*alen == *aspace) { int yspace = *aspace * 2 + 1; char *y = (char *) realloc(*a,yspace); if (!y) return 0; *a = y; *aspace = yspace; } (*a)[*alen] = c; ++*alen; return 1; } void die_read(void) { fprintf(stderr,"file4: fatal: unable to read data.txt\n"); exit(111); } int main(void) { char *x = 0; int xspace = 0; int xlen = 0; FILE *f; char c; int i; f = fopen("data.txt","r"); if (!f) die_read(); while (fscanf(f,"%c",&c) == 1) if (!chararray_append(&x,&xspace,&xlen,c)) { fprintf(stderr,"file4: fatal: out of memory\n"); exit(111); } if (ferror(f)) die_read(); for (i = 0;i < xlen;++i) putchar(x[i]); for (i = 0;i < xlen;++i) putchar(x[i]); return 0; }