gpt4 book ai didi

c++ - 使用 snprintf 填充结构体

转载 作者:行者123 更新时间:2023-11-30 20:34:09 24 4
gpt4 key购买 nike

有人可以告诉我为什么结构体中的变量会被覆盖吗?

输出为:

Buffor is: 1.name , struct is: 1.name
Buffor is: 2.name , struct is: 2.name
Buffor is: 3.name , struct is: 3.name
3.name
3.name
3.name
    int i = 1;
char buffor[100];
int n = 3;

struct person * data;
data = (struct person *) malloc(n * sizeof(struct person));

while (i <= n) {
snprintf(buffor, sizeof(buffor), "%d.name", i);
data[i - 1].firstname =buffor;
printf("Buffor is: %s , struct is: %s \n", buffor, data[i - 1].firstname);
i++;
}

for (int i = 0; i < n; i++) {
printf("%s \n", data[i].firstname);
}
return 0;
}

最佳答案

您需要为每个结构的 firstname 属性分配内存。复制字符串只会复制指针。而不是

data[i - 1].firstname = buffor;

你需要这样的东西:

data[i - 1].firstname = (char*)malloc(strlen(buffor) + 1);
strcpy(data[i - 1].firstname, buffor);

关于c++ - 使用 snprintf 填充结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43159212/

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