gpt4 book ai didi

c - 指针在结构数组中替换自身

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:05 25 4
gpt4 key购买 nike

<分区>

好的,我有这段代码,它可以从文件中提取各种内容

while(fgets(buffer, sizeof(buffer), fp) !=NULL)
{
name = strtok(buffer,del);
class=strtok(NULL,del);
grade = atoi(strtok(NULL,del));


d[counter].name=name;
d[counter].course=class;
d[counter].grade=grade;
printf("%s %s %d\n",d[counter].name,d[counter].course,d[counter].grade);
counter++;
}

现在的问题是,每次从 strtok 检索到新标记时,它都会替换结构数组中的先前值。

我已经缩小到这个 block 有问题:

d[counter].name=name;
d[counter].course=class;

它似乎指向同一个内存块,每次 strtok 返回一个新值时都会重新写入该内存块,因此我在结构中的所有指针都指向该 1 个对象。

这是我的结构:

struct student {
char *name;
char *course;
int grade;

};

现在我的问题是,无论如何都可以将 strtok 值放入单独的内存地址,这样它们就不会全部指向 1 个位置并替换它们自己吗?

Strdup、malloc 和 memmove 不适合我。

为了更清楚地表示正在发生的事情,这里是粗略的预期输出

Tom    Phys 1444   54
Joe CSE 1310 95
Alex Chem 2315 86
Tim Span 1443 81

现在这是我得到的输出

Tim  Span 1443  54
Tim Span 1443 95
Tim Span 1443 86
Tim Span 1443 81

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com