gpt4 book ai didi

将字符串复制到指针似乎不起作用

转载 作者:行者123 更新时间:2023-11-30 18:20:39 26 4
gpt4 key购买 nike

我有这样的Node结构

typedef struct Node{
unsigned int length;
char *string;
} Node;

此操作接受指向 Node 的指针并尝试附加提供的字符串:

int setString(Node *node, char *string){

char *newString;
if(!isString(node) || !string) return 0;

newString = (char *) malloc(strlen(string)+1);
if(!newString) return 0;

/*THIS PART FAILS*/
strncpy(newString,string,sizeof(newString));

node->string = newString;
node->length = strlen(newString);

/*Which can be seen here*/
printf("Original String: %s\n",string);
printf("Copied String: %s\n",node->string);

return 1;
}

在指示的部分,我可以看到原始字符串似乎没有被复制到node->string。它复制了前两个字符,然后接下来的内容要么是垃圾,要么只是空白。

我检查了这篇文章,我正在关注第三种情况,这似乎适用于OP。也许我忽略了一些东西,但就是不知道在哪里

最佳答案

strncpy(newString,string,sizeof(newString));

在这种情况下,sizeof 不会执行您想要的操作。传递您分配的大小或不要使用strncpy。如果您遵循自己的逻辑,那么您已经信任 string ,因为您在调用 malloc 时获取了它的 strlen

因此您可以安全地使用 strcpy 代替。

<小时/>

如果你愿意稍微不便携,你可以逃脱:

newString = strdup(string);

关于将字符串复制到指针似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15459694/

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