fork download
  1. #include <stddef.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. typedef struct
  6. {
  7. int *data;
  8. size_t size;
  9. } *dynamic_array;
  10.  
  11. dynamic_array create_dynamic_array()
  12. {
  13. dynamic_array array = malloc(sizeof(*array));
  14. array->data = NULL;
  15. array->size = 0;
  16. return array;
  17. }
  18.  
  19. void* append_to_dynamic_array(dynamic_array array, int value)
  20. {
  21. int *new_array = realloc(array->data, (array->size+1) * sizeof(*array->data));
  22. if (new_array)
  23. {
  24. array->data = new_array;
  25. new_array[array->size] = value;
  26. ++array->size;
  27. }
  28. return new_array;
  29. }
  30.  
  31. void destroy_dynamic_array(const dynamic_array array)
  32. {
  33. free(array->data);
  34. free(array);
  35. }
  36.  
  37. int get_from_dynamic_array(const dynamic_array array, size_t index)
  38. {
  39. return array->data[index];
  40. }
  41.  
  42. size_t get_size_of_dynamic_array(const dynamic_array array)
  43. {
  44. return array->size;
  45. }
  46.  
  47. int main()
  48. {
  49. dynamic_array my_array = create_dynamic_array();
  50. int value;
  51. size_t i;
  52.  
  53. while(scanf("%d", &value) == 1)
  54. {
  55. if (!append_to_dynamic_array(my_array, value))
  56. {
  57. puts("Au weia! Kein Speicher mehr.");
  58. }
  59. }
  60.  
  61. puts("Arrayinhalt:");
  62. for(i = 0; i < get_size_of_dynamic_array(my_array); ++i)
  63. printf("%d\n", get_from_dynamic_array(my_array, i));
  64.  
  65.  
  66. destroy_dynamic_array(my_array);
  67. }
  68.  
Success #stdin #stdout 0s 2428KB
stdin
5 8 5 4 8 2 1 3 6 6 9 7 2        
stdout
Arrayinhalt:
5
8
5
4
8
2
1
3
6
6
9
7
2