71 lines
1.8 KiB
C
Executable File
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;
|
|
}
|