gpt4 book ai didi

c - strcpy 使用指针

转载 作者:太空狗 更新时间:2023-10-29 15:46:03 26 4
gpt4 key购买 nike

我正在尝试使用指针自己编写 strcpy,但在运行时出现错误。

void str_cpy(char **destination, const char *source) {
// char *s1 = *destination;

while (*source != '\0') {
**destination++ = *source++; //Get an error here
}
**destination = '\0';
}

我调用函数如下:

char *str = NULL;
str_cpy(&str, "String");

还不行吗?

谢谢!

最佳答案

不,这不好。为什么?因为 str 是一个 NULL 指针。它没有指向任何东西。当您尝试将值写入其中时,它们会去哪里?它没有指向任何分配的内存!

您首先必须为str 分配内存。你可以这样做:

char *str = malloc(strlen("String") + 1); // + 1 for the '\0' character at the end of C-style strings

或者你可以这样做:

char str[256]; // make str large enough to hold 256 chars. Note that this is not as safe as the above version!

此外,destination 应该是单指针,而不是双指针。好吧,使用双指针在技术上并没有错,只是没有必要。

可选地,您可以在 str_cpy 函数中分配内存,如下所示:

void str_cpy(char **destination, const char *source) {
*destination = malloc(strlen(source) + 1);
// ... continue as normal

关于c - strcpy 使用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13460934/

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