我有一个 struct
指针数组,在每个 struct
中是另一个 struct
,它包含一个名为 firstname
的字段>, firstname 是一个char *.
struct
在程序第一次运行时从一个文件中填充数据,形成一个链表。我的定义如下...
struct person
{
char *firstname;
char *lastname;
};
struct node
{
struct person employee;
struct node *next;
};
struct node *nodes[MAX_NODES];
我从用户那里得到一个字符串输入并将其存储在一个 char * 中(它指向与原始大小相同的内存块),现在我想更改由
访问的 char *nodes[index]->data.firstname
到 char * 我刚刚从用户那里读到。我试过了
nodes[index]->data.firstname = newinput;
用 printf() 测试了上面的内容,它似乎有效,但是在稍后阶段打印出数据会打印出旧数据。这是为什么?
最佳答案
很可能,您有两个指针指向同一个内存块。
您可能想使用 malloc()
为复制的字符串分配额外的内存,然后使用 strcpy()
将原始字符串复制到新的内存块或strncpy()
。
关于c - 将 char * 分配给另一个 char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25488271/