#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct news
{
size_t size;
char *name;
}
news;
news* insert(news *note, char *text, int i)
{
//NB: if note is NULL realloc acts like malloc
news
* new_note
=(news
*)realloc(note
, (i
+1)*sizeof(news
)); if (new_note)
{
size_t size
=strlen(text
)*sizeof(char); new_note[i].size=size;
new_note
[i
].
name = malloc(size
+1); //make room for /0 strcpy(new_note
[i
].
name,text
); //copies trailing /0 as well }
return (new_note);
}
int main()
{
news *note=NULL;
int j,k;
for (j=0;j<5;j++)
{
news* new_note=insert(note,"hello",j);
if (new_note)
{
note=new_note;
}
else //bork
break;
}
//don't forget to free your allocations !
for (k=0;k<j;k++)
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdHlwZWRlZiBzdHJ1Y3QgbmV3cwp7CiAgICBzaXplX3Qgc2l6ZTsKICAgIGNoYXIgKm5hbWU7Cn0KbmV3czsKCgpuZXdzKiBpbnNlcnQobmV3cyAqbm90ZSwgY2hhciAqdGV4dCwgaW50IGkpCnsKICAgIC8vTkI6IGlmIG5vdGUgaXMgTlVMTCByZWFsbG9jIGFjdHMgbGlrZSBtYWxsb2MKICAgIG5ld3MqIG5ld19ub3RlPShuZXdzKilyZWFsbG9jKG5vdGUsIChpKzEpKnNpemVvZihuZXdzKSk7CiAgICBpZiAobmV3X25vdGUpCiAgICB7CiAgICAgICAgc2l6ZV90IHNpemU9c3RybGVuKHRleHQpKnNpemVvZihjaGFyKTsKICAgICAgICBuZXdfbm90ZVtpXS5zaXplPXNpemU7CiAgICAgICAgbmV3X25vdGVbaV0ubmFtZSA9IG1hbGxvYyhzaXplICsxKTsgLy9tYWtlIHJvb20gZm9yIC8wCiAgICAgICAgc3RyY3B5KG5ld19ub3RlW2ldLm5hbWUsdGV4dCk7IC8vY29waWVzIHRyYWlsaW5nIC8wIGFzIHdlbGwKICAgIH0KICAgIHJldHVybiAobmV3X25vdGUpOwp9CgppbnQgbWFpbigpCnsKICAgIG5ld3MgKm5vdGU9TlVMTDsKICAgIGludCBqLGs7CgogICAgZm9yIChqPTA7ajw1O2orKykKICAgIHsKICAgICAgICBuZXdzKiBuZXdfbm90ZT1pbnNlcnQobm90ZSwiaGVsbG8iLGopOwogICAgICAgIGlmIChuZXdfbm90ZSkKICAgICAgICB7CiAgICAgICAgICAgIG5vdGU9bmV3X25vdGU7CiAgICAgICAgICAgIHByaW50ZigiJXNcbiIsbm90ZVtqXS5uYW1lKTsKICAgICAgICB9CiAgICAgICAgZWxzZSAvL2JvcmsKICAgICAgICAgICAgYnJlYWs7CiAgIH0KCgogICAvL2Rvbid0IGZvcmdldCB0byBmcmVlIHlvdXIgYWxsb2NhdGlvbnMgIQogICAgZm9yIChrPTA7azxqO2srKykKICAgICAgICBmcmVlKG5vdGVba10ubmFtZSk7CiAgICBmcmVlKG5vdGUpOwoKICAgcmV0dXJuIDA7Cn0K