我有这个结构Node
typedef struct Node{
unsigned int length;
char *string;
} Node;
此操作接受指向 a 的指针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。也许我忽略了一些东西,但就是不知道在哪里