c - 将 char * 分配给另一个 char *

标签 c string pointers struct

我有一个 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/

相关文章:

c - 在 C 中是否可以在不移动它的情况下缩小分配的内存?

c++ - 制作 : setting up a complex prerequisit list

c++ - OpenMP:并行运行两个函数,每个函数占线程池的一半

javascript - 创建类似于电子表格的列索引

c - GDB - 为没有符号的二进制文件提供源代码路径

PHP - 将字符串转换为 float

java - java 循环输出中不需要的重复

c - 链表清除函数

c - 按 qsort 排序后缀

algorithm - 仅使用 3 个指针查找链表中间三分之一的元素?