C 如何将字符串拆分为结构?

C 如何将字符串拆分为结构?,c,C,我想得到一个由“,”分隔的所有子字符串的列表,并将每个子字符串放入一个结构中。 e、 g如果我收到“connor,michel”,我想把“connor”放在结构[0]中。name和“michel”放在结构[1]中。name。现在我有这个: struct crit { char* titre; char* noms; int annees; float cote; }; char * les_noms = (char*) malloc(sizeof(char*))

我想得到一个由“,”分隔的所有子字符串的列表,并将每个子字符串放入一个结构中。 e、 g如果我收到“connor,michel”,我想把“connor”放在结构[0]中。name和“michel”放在结构[1]中。name。现在我有这个:

struct crit
{
    char* titre;
    char* noms;
    int annees;
    float cote;
};

char * les_noms = (char*) malloc(sizeof(char*));
int i = 0;
    char *item = strtok(noms, ",");
    
    while(item != NULL)
    {
        les_noms[i++] = item;
        printf("un nom = %s\n", item);
        item = strtok(NULL, ",");
        
    }
对不起,我说了法语。 编辑:我已经下定决心了,这个怎么样

#包括
#包括
#包括
结构人
{
字符*名称;
};
int main()
{
struct person*persons=NULL;
int num_persons=0;
字符名称[80]=“乔安娜、克莱顿、马尔西奥、埃拉纳、若昂”;
常量字符sep[2]=“,”;
字符*项目=strtok(名称,sep);
while(项!=NULL)
{
persons=realloc(persons,++num_persons*sizeof(struct person));
人员[num_persons-1].name=malloc(strlen(item))+1;
strcpy(persons[num_persons-1]。姓名,项目);
item=strtok(空,“”,“”);
}
for(无符号整数i=0;i
或固定大小的解决方案:

#包括
#包括
#包括
结构人
{
字符*名称;
};
int main()
{
字符名称[80]=“乔安娜、克莱顿、马尔西奥、埃拉纳、若昂”;
常量字符sep[2]=“,”;
无符号整数人数=1;
for(无符号整数i=0;i
结构中可能需要更多项,这很简单,请看:

#包括
#包括
#包括
结构人
{
字符*名称;
int len_名称;
int-id;
};
int main()
{
字符名称[80]=“乔安娜、克莱顿、马尔西奥、埃拉纳、若昂”;
常量字符sep[2]=“,”;
无符号整数人数=1;
for(无符号整数i=0;i
您以两种不同的方式定义了两次
les_noms
。下定决心。
char*les_noms=(char*)malloc(sizeof(char*))
不是您分配字符串的方式,另一个是正确的
char les_noms[50]第一个只是分配一个指针(可能是4或8个字节),这是没有用的。您是否有正在读取的文件?因为您的代码似乎只分配les_nom,而从不向其中读取任何数据。(逗号分隔的)数据从哪里来?对于
strtok(noms,…)
,没有
noms
。拼凑一张桌子怎么样?或这就是问题所在吗?
char*les_noms=(char*)malloc(sizeof(char*))-错误!!!!您需要
char*les\u noms=malloc(我的字符串长度)