私はこの構造を持っています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
。最初の 2 文字をコピーし、その後に続く文字はゴミか単なる空白になります。
この投稿を確認しましたが、OP で機能しているように見える 3 番目のケースに従っています。たぶん私は何かを見落としていましたが、どこにあるのかわかりません