gpt4 book ai didi

c - 如何在 C 中修改结构内的字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 02:28:15 25 4
gpt4 key购买 nike

我正在尝试修改结构中的字段。我对其他类型(即 intfloat 等)执行此操作没有问题,但 char * 给我带来了问题。我想我必须做类似的事情:

typedef struct{
char *string_field;
} struct_name;

struct_name *struct_name1;
struct_name1 = (struct_name *) malloc(sizeof(struct_name));
strcpy(struct_name1->string_field, new_string);

printf("New string: %s\n", struct_name1->string_field);

但这给了我一个段错误。你认为我会遇到这个问题的原因是什么?最初,我认为 char *string_field 可能不够大,无法复制到其中,但我手动将其大小更改为 100(绰绰有余),但我仍然遇到这个问题。

最佳答案

您为您的结构保留内存,它包含一个指向字符串的指针,但不包含用于字符串内容的空间。为字符串内容保留内存,让你的结构指针指向它;然后你可以将 newstring 的内容复制到那个内存中:

struct_name1->string_field = malloc(strlen(new_string)+1);
strcpy(struct_name1->string_field, new_string);

关于c - 如何在 C 中修改结构内的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47723438/

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