c - 使用 strcpy 通过指针运算符将字符串复制到结构的成员

标签 c string pointers struct strcpy

我正在尝试使用 strcpy 为作为结构成员的 char 数组设置值。如果可能的话,我想使用指针运算符来执行此操作。

struct my_struct{
  char foo[15];
} *a_struct_Ptr;

int main(){
  strcpy(a_struct_Ptr -> foo, "test");
return 0;
}

我可以编译这段代码,但是当我运行它时,我遇到了段错误。

如果我不将结构定义为指针,它似乎也可以正常工作,例如以下代码可以正常工作......

struct my_struct{
  char foo[15];
}a_struct;

int main(){
  strcpy(a_struct.foo, "test");
  return 0;
}

我希望能够用指针来做到这一点。 如有任何反馈,我们将不胜感激。谢谢

最佳答案

正如许多人评论的那样,问题是我没有为指向结构的指针分配内存。

在我的 strcpy 语句之前加上

a_struct_Ptr = (struct my_struct *) malloc(sizeof(struct my_struct));

我能够成功地将字符串文字复制到 my_struct 的 char 数组成员。

作为良好实践,我在结构使用完毕后添加了 free(a_struct_Ptr);

关于c - 使用 strcpy 通过指针运算符将字符串复制到结构的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43444299/

相关文章:

javascript - 如何为常量创建 JavaScript 和 C/C++ 之间的通用文件?

c++ - 为什么返回浮点值会改变它的值?

php - Unicode 字符串 PHP

algorithm - 在不到 O(n) 的时间内搜索与模式 "abc:*:xyz"匹配的字符串

python - Ctypes 返回数组

c - C语言编程中的插入排序

c - fwrite 是否在内部调用任何锁?

c++ - 在 C 和 C++ 中都有效的代码在用每种语言编译时是否会产生不同的行为?

arrays - 将 [Int?] 转换为 [Int]

string - 如何将 'string pointer' 转换为 Golang 中的字符串?