#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//The related variables are treated together in the structure. and Avoid using global variables.
typedef struct {
int entries;
int mem_allocated;
char **data;
} Entry;
void add_Entry(const char *p, Entry *dp);
int main(void) {
const char *p0 = "ksdfahj93qhf9";
const char *p1 = "siodfnrieopq";
const char *p2 = "erf9ih94gri9g";
Entry dp = { 0 };//initialize
add_Entry(p0, &dp);
add_Entry(p1, &dp);
add_Entry(p2, &dp);
for(int i = 0; i < dp.entries; i++) {
}
}
void add_Entry(const char *p, Entry *dp){
if(dp->entries == dp->mem_allocated)
dp->mem_allocated += 3;
void *temp
= realloc(dp
->data
, dp
->mem_allocated
* sizeof(*dp
->data
)); if(!temp){
perror("Memory allocation failed!"); }
dp->data = temp;
if(!temp){
perror("Memory allocation failed!"); }
dp
->data
[dp
->entries
++] = strcpy(temp
, p
);}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKLy9UaGUgcmVsYXRlZCB2YXJpYWJsZXMgYXJlIHRyZWF0ZWQgdG9nZXRoZXIgaW4gdGhlIHN0cnVjdHVyZS4gYW5kIEF2b2lkIHVzaW5nIGdsb2JhbCB2YXJpYWJsZXMuCnR5cGVkZWYgc3RydWN0IHsKCWludCBlbnRyaWVzOwoJaW50IG1lbV9hbGxvY2F0ZWQ7CgljaGFyICoqZGF0YTsKfSBFbnRyeTsKCnZvaWQgYWRkX0VudHJ5KGNvbnN0IGNoYXIgKnAsIEVudHJ5ICpkcCk7CgppbnQgbWFpbih2b2lkKSB7Cgljb25zdCBjaGFyICpwMCA9ICJrc2RmYWhqOTNxaGY5IjsKCWNvbnN0IGNoYXIgKnAxID0gInNpb2RmbnJpZW9wcSI7Cgljb25zdCBjaGFyICpwMiA9ICJlcmY5aWg5NGdyaTlnIjsKCglFbnRyeSBkcCA9IHsgMCB9Oy8vaW5pdGlhbGl6ZQoKCWFkZF9FbnRyeShwMCwgJmRwKTsKCWFkZF9FbnRyeShwMSwgJmRwKTsKCWFkZF9FbnRyeShwMiwgJmRwKTsKCglmb3IoaW50IGkgPSAwOyBpIDwgZHAuZW50cmllczsgaSsrKSB7CgkJcHJpbnRmKCIlc1xuIiwgZHAuZGF0YVtpXSk7CgkJZnJlZShkcC5kYXRhW2ldKTsKCX0KCWZyZWUoZHAuZGF0YSk7Cn0Kdm9pZCBhZGRfRW50cnkoY29uc3QgY2hhciAqcCwgRW50cnkgKmRwKXsKCWlmKGRwLT5lbnRyaWVzID09IGRwLT5tZW1fYWxsb2NhdGVkKQoJCWRwLT5tZW1fYWxsb2NhdGVkICs9IDM7CgoJdm9pZCAqdGVtcCA9IHJlYWxsb2MoZHAtPmRhdGEsIGRwLT5tZW1fYWxsb2NhdGVkICogc2l6ZW9mKCpkcC0+ZGF0YSkpOwoJaWYoIXRlbXApewoJCXBlcnJvcigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkISIpOwoJCWV4aXQoRVhJVF9GQUlMVVJFKTsKCX0KCWRwLT5kYXRhID0gdGVtcDsKCgl0ZW1wID0gbWFsbG9jKHN0cmxlbihwKSsxKTsKCWlmKCF0ZW1wKXsKCQlwZXJyb3IoIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCEiKTsKCQlleGl0KEVYSVRfRkFJTFVSRSk7Cgl9CglkcC0+ZGF0YVtkcC0+ZW50cmllcysrXSA9IHN0cmNweSh0ZW1wLCBwKTsKfQ==