gpt4 book ai didi

c - 在 C 中有 char 指针时的 strcpy

转载 作者:行者123 更新时间:2023-12-02 05:44:37 25 4
gpt4 key购买 nike

我对 char 数组有一个简单的疑问。我有一个结构:

struct abc {
char *charptr;
int a;
}

void func1()
{
func2("hello");
}

void func (char *name)
{
strcpy(abc.charptr, name); // This is wrong.
}

strcpy 将导致崩溃,因为我没有为charptr 分配任何内存。问题是:对于 mallocing 这 block 内存,我们可以做什么

abc.charptr = (char *) malloc(strlen(name)); //?
strcpy(abc.charptr, name); // Is this (or strncpy) right ?

这样对吗?

最佳答案

如果您要使用 malloc(),您需要记住为空终止符腾出空间。所以在调用 strcpy() 之前使用 malloc(strlen(name)+1)

但在这种情况下,您应该只使用 strdup() 一次性完成分配和复制:

abc.charptr = strdup(name);

strdup() 返回的内存已通过 malloc() 分配,因此必须通过调用 free() 来释放>.

关于c - 在 C 中有 char 指针时的 strcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7730906/

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