/* In this task, you should get familiar with malloc(), realloc() and free(). - user input: sequence of characters - store in array of characters - dynamically increase memory on heap for array - temporary pointer for return value of realloc() - add All characters to array until Q is entered - check if mem-alloc OK after each malloc() / realloc() - If mem-alloc NOK - print: "Memory allocation failed\n" - return 1 - free allocated memory at the end of main() Examples: awe s o m e !Q Entered characters: a w e s o m e ! IS P ! :) Q Entered characters: I S P ! : ) */ #include #include // TODO: Include the required header file int main(void) { int capacity = 2; int count = 0; char *characters = NULL; characters = (char *)calloc(capacity, sizeof(char)); // TODO: Allocate memory (make use of the variable capacity) if (characters == NULL) { printf("Memory allocation failed\n"); return 1; } // TODO: Check if memory could be allocated char value = 0; while (scanf(" %c", &value) && value != 'Q') { if (count == capacity) // TODO: Check capacitiy and use realloc() to not run out of memory on the heap { capacity = capacity * count; char *temp_chars = (char*)realloc(characters, sizeof(char) * capacity); if (temp_chars == NULL) { printf("Memory allocation failed\n"); return 1; } characters = temp_chars; } // TODO: Check if memory could be allocated characters[count] = value; count++; // TODO: Add the entered value to the characters array } printf("Entered characters:"); for (int i = 0; i < count; i++) { printf(" %c", characters[i]); } printf("\n"); free(characters); // TODO: Free the allocated memory return 0; }