Files

71 lines
1.8 KiB
C
Executable File

/*
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 <stdio.h>
#include <stdlib.h> // 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;
}