#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int *data;
size_t size;
} *dynamic_array;
dynamic_array create_dynamic_array()
{
dynamic_array array
= malloc(sizeof(*array
)); array->data = NULL;
array->size = 0;
return array;
}
void* append_to_dynamic_array(dynamic_array array, int value)
{
int *new_array
= realloc(array
->data
, (array
->size
+1) * sizeof(*array
->data
)); if (new_array)
{
array->data = new_array;
new_array[array->size] = value;
++array->size;
}
return new_array;
}
void destroy_dynamic_array(const dynamic_array array)
{
}
int get_from_dynamic_array(const dynamic_array array, size_t index)
{
return array->data[index];
}
size_t get_size_of_dynamic_array(const dynamic_array array)
{
return array->size;
}
int main()
{
dynamic_array my_array = create_dynamic_array();
int value;
size_t i;
while(scanf("%d", &value
) == 1) {
if (!append_to_dynamic_array(my_array, value))
{
puts("Au weia! Kein Speicher mehr."); }
}
for(i = 0; i < get_size_of_dynamic_array(my_array); ++i)
printf("%d\n", get_from_dynamic_array
(my_array
, i
));
destroy_dynamic_array(my_array);
}
I2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCAqZGF0YTsKICBzaXplX3Qgc2l6ZTsKfSAqZHluYW1pY19hcnJheTsKCmR5bmFtaWNfYXJyYXkgY3JlYXRlX2R5bmFtaWNfYXJyYXkoKQp7CiAgZHluYW1pY19hcnJheSBhcnJheSA9IG1hbGxvYyhzaXplb2YoKmFycmF5KSk7CiAgYXJyYXktPmRhdGEgPSBOVUxMOwogIGFycmF5LT5zaXplID0gMDsKICByZXR1cm4gYXJyYXk7Cn0KCnZvaWQqIGFwcGVuZF90b19keW5hbWljX2FycmF5KGR5bmFtaWNfYXJyYXkgYXJyYXksIGludCB2YWx1ZSkKewogIGludCAqbmV3X2FycmF5ID0gcmVhbGxvYyhhcnJheS0+ZGF0YSwgKGFycmF5LT5zaXplKzEpICogc2l6ZW9mKCphcnJheS0+ZGF0YSkpOwogIGlmIChuZXdfYXJyYXkpCiAgICB7CiAgICAgIGFycmF5LT5kYXRhID0gbmV3X2FycmF5OwogICAgICBuZXdfYXJyYXlbYXJyYXktPnNpemVdID0gdmFsdWU7CiAgICAgICsrYXJyYXktPnNpemU7CiAgICB9CiAgcmV0dXJuIG5ld19hcnJheTsKfQoKdm9pZCBkZXN0cm95X2R5bmFtaWNfYXJyYXkoY29uc3QgZHluYW1pY19hcnJheSBhcnJheSkKewogIGZyZWUoYXJyYXktPmRhdGEpOwogIGZyZWUoYXJyYXkpOwp9CgppbnQgZ2V0X2Zyb21fZHluYW1pY19hcnJheShjb25zdCBkeW5hbWljX2FycmF5IGFycmF5LCBzaXplX3QgaW5kZXgpCnsKICByZXR1cm4gYXJyYXktPmRhdGFbaW5kZXhdOwp9CgpzaXplX3QgZ2V0X3NpemVfb2ZfZHluYW1pY19hcnJheShjb25zdCBkeW5hbWljX2FycmF5IGFycmF5KQp7CiAgcmV0dXJuIGFycmF5LT5zaXplOwp9CgppbnQgbWFpbigpCnsKICBkeW5hbWljX2FycmF5IG15X2FycmF5ID0gY3JlYXRlX2R5bmFtaWNfYXJyYXkoKTsKICBpbnQgdmFsdWU7IAogIHNpemVfdCBpOyAKCiAgd2hpbGUoc2NhbmYoIiVkIiwgJnZhbHVlKSA9PSAxKQogICAgewogICAgICBpZiAoIWFwcGVuZF90b19keW5hbWljX2FycmF5KG15X2FycmF5LCB2YWx1ZSkpCiAgICAgICAgewogICAgICAgICAgcHV0cygiQXUgd2VpYSEgS2VpbiBTcGVpY2hlciBtZWhyLiIpOwogICAgICAgIH0KICAgIH0KCiAgcHV0cygiQXJyYXlpbmhhbHQ6Iik7CiAgZm9yKGkgPSAwOyBpIDwgZ2V0X3NpemVfb2ZfZHluYW1pY19hcnJheShteV9hcnJheSk7ICsraSkKICAgIHByaW50ZigiJWRcbiIsIGdldF9mcm9tX2R5bmFtaWNfYXJyYXkobXlfYXJyYXksIGkpKTsKCgogIGRlc3Ryb3lfZHluYW1pY19hcnJheShteV9hcnJheSk7Cn0K