我有接受一個指向Node
並嘗試附加提供的字符串的Node
複製一個字符串的指針似乎不工作
typedef struct Node{
unsigned int length;
char *string;
} 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。也許我忽略了一些東西,但就是無法找出其中
另外,在問這個問題之前,你做了哪些研究?有一個[c-faq.com常見問題](http://c-faq.com/malloc/sizeof.html)回答了這個問題!如果你不得不向我們提出這個問題,那麼我建議你的學習方法對你來說效果不佳。 – Sebivor 2013-03-17 10:59:52
@modifiablelvalue對不起我的C,我試圖跨越JS和C之間的這種差距,特別是內存分配。謝謝你的參考:) – Joseph 2013-03-17 11:02:43
@JosephtheDreamer幸運的是,一隻猴子可以通過在鍵盤上搗成臉來學習Javascript。以這種方式學習C是不明智的,因爲最初似乎起作用的那個可能會受到不可移植和*未定義行爲的困擾。我建議讀一本書。 – Sebivor 2013-03-17 11:06:32