gpt4 book ai didi

c - 结构体属性在多个元素上具有相同的地址

转载 作者:行者123 更新时间:2023-11-30 18:44:29 25 4
gpt4 key购买 nike

嗨,我有一个具有 char * 属性的结构数组。但是,当我尝试为每个元素分配多个值时,当我只读取我写入的最后一个值时,会显示在所有元素中。不知何故,所有 char* 属性都具有相同的内存地址。

#include <stdio.h>
#include <string.h>

struct Identity{
char *name;
int idNumber;
} identities[5];

int main(){

int i;
char tempName[20];

for(i = 0; i < 2; i++){
printf("IDENTITY %d\n", i+1);
printf("Name: ");
fgets(tempName, 20, stdin);
strtok(tempName, "\n");
identities[i].name = tempName;
printf("Id: ");
scanf("%d", &identities[i].idNumber);
getchar();
}

for(int i = 0; i < 5; i++){
printf("MEMORY %d: %ld\n", i+1, identities[i].name); // FILLED VALUES HAVE EQUAL MEMORY ADRESS???? WHY??
}



printf("***OUTPUT***\n");

for(i = 0; i < 5; i++){
printf("IDENTITY %d\n", i+1);
printf("Name: %s\n", identities[i].name);
printf("Id: %d", identities[i].idNumber);
if(i != 4){
printf("\n");
}
}



return 0;
}

最佳答案

这一行是问题所在:

identities[i].name = tempName

在这里,您使所有结构name成员指向tempName的第一个元素。

我建议您将 name 成员设置为一个数组,然后将字符串复制到其中。

关于c - 结构体属性在多个元素上具有相同的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57867079/

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