[英]How do I make a struct containing a dynamic array of strings in C?
我有三個文件:header.h,machine.c和main.c
我的header.h文件:
typedef struct smp * alamat;
typedef struct smp{
int jd;
int level;
char c[100];
char * words;
alamat sibling;
alamat child;
}simpul;
我想在該結構的可變詞中添加字符串的動態數組。 我的machine.c文件如下所示:
void addChild(char c[], char *dosa, int n, simpul* s){
int i;
if(s != NULL){//simpul tidak kosong
dosa = malloc(n * sizeof(char*));
simpul* baru = (simpul*)malloc(sizeof(simpul));
strcpy(baru->c,c);
baru-> jd = n;
baru->words = dosa;
if(s->child == NULL){//tidak punya anak
baru->child = NULL;
baru->sibling = NULL;
s->child = baru;
}else if(s->child->sibling == NULL){//anak cuma 1
baru->child = NULL;
s->child->sibling = baru;
baru->sibling = s->child;
}else{//anak banyak
simpul * terakhir = s->child;
while(terakhir->sibling != s->child){
terakhir = terakhir->sibling;
}
terakhir ->sibling = baru;
baru->child = NULL;
baru->sibling = s->child;
}
}
}
我的主要方法是將字符串數組傳遞給machine.c:
impul * node = findSimpul(penanda,t.root);
char *string = (char *) malloc( (n* sizeof(char)));
for(k=0;k<n;k++){
scanf("%s",&string[k]);
}
addChild(anak,string,n,node);
我該如何解決這些問題?
您需要一個指針數組。
char **strings;
int nmemb = 1;
strings = calloc(nmemb, sizeof(*char));
strings[0] = calloc(your_str_len, sizeof(char));
// now you have allocated space for one string. in strings[0]
// let's add another
nmemb = 2;
strings = realloc(strings, sizeof(*char) * nmemb);
strings[1] = calloc(your_2nd_str_len, sizeof(char));
// now you are ready to use the second string in string[1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.