1. Compile calloc and use malloc internally.
void *calloc (size_t n, size_t size){char * memory;memory =(char*) malloc(n * size);while( memory != NULL){char * ptr;ptr = memory;while ( --n >= 0){*ptr++ = '\0';}}return memory;}
2. Compile a function to dynamically store the input integers in a column.
#include <stdlib.h>int * readints(){int *array;int value;int length = 1;array = (int *) malloc(length * sizeof(int));if (array == NULL){return NULL;}while ( scanf_s("%d", &value) == 1){length++;array =(int *) realloc(array, length * sizeof(int));if (array == NULL){return NULL;}array[length-1] = value;}}
3. Compile a function to dynamically store a column of input char.
# Include "stdlib. H "char * readstring () {char * array; char * PTR; int length = 1; array = (char *) malloc (sizeof (char); gets (PTR ); if (PTR = NULL) {exit (exit_failure);} while (* PTR! = NULL) {length ++; array = (char *) realloc (array, length * sizeof (char); If (array = NULL) Exit (exit_failure ); array [length-1] = * PTR; PTR ++;} // append an nularray = (char *) realloc (array, (length ++) * sizeof (char); If (array = NULL) Exit (exit_failure); array [length-1] = '\ 0'; return array ;}
C and pointer (pointers on C) -- Chapter 11th: dynamic memory allocation (ii) exercises