gpt4 book ai didi

将字符串复制到C中的字符指针

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

这是一个简单的程序来演示我的问题。我有一个函数 functionB,它将指向字符数组的指针传递给 functionAfunctionA 查找值并将其存储到字符数组中。字符数组的内容应该被复制到字符指针fdate。我怎样才能做到这一点?

int functionB() {
char fdate[20];
functionA(&fdate[0]);
return 0;
}

int functionA(char *fdate) {
char date[20] = "20 May 2016";
strcpy(fdate, date);
return 0;
}

最佳答案

不能将字符串复制到字符指针中,但可以将字符串复制到字符指针指向的内存块中。你不能这样做:

char *ptr;
functionA(ptr);

并期望 ptr 指向字符串。您需要将指向有效内存块的指针传递到您的函数中,如下所示:

char buf[100];
functionA(buf);

现在副本可以工作了,但是这个函数是不安全的,因为它不知道有多少内存可用于写入它的字符串,并且可能导致缓冲区溢出。更好的方法是将缓冲区的大小与缓冲区一起传递:

functionA(buf, sizeof(buf));

另一种方法是将指针传递给指针,并让函数动态分配字符串。然而,在这种情况下,调用者负责在使用后释放内存:

char *ptr;
functionA(&ptr);
...
free(ptr);
...
int functionA(char **fdate) {
char date[20] = "20 May 2016";
*fdate = malloc(sizeof(date));
memcpy(*fdate, date);
return 0;
}

关于将字符串复制到C中的字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36966600/

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