/* Similar to malloc/realloc program in Chapter 4, pp. 453-454. */ #include #include /* for malloc and realloc */ int main() { size_t n = 0; size_t i; /* uninitialized variable */ int *p = (int *)malloc(n * sizeof(int)); /* int should be typedef */ if (p == NULL) { fprintf(stderr, "malloc failed\n"); exit(EXIT_FAILURE); } printf("Please type integers. Press RETURN after each one.\n"); for (;;) { int i; /* uninitialized variable */ printf("Next integer: "); if (scanf("%d", &i) != 1) { break; } p = (int *)realloc(p, ++n * sizeof (int)); if (p == NULL) { fprintf(stderr, "realloc failed\n"); exit(EXIT_FAILURE); } p[n - 1] = i; } printf("\n"); for (i = 0; i < n; ++i) { printf("%d\n", p[i]); } free(p); return feof(stdin) ? EXIT_SUCCESS : EXIT_FAILURE; }