2015-09-20 72 views
0

試圖進行下列字符串複製時,我接收段故障字符串數組:分段故障複製到在節點

節點定義:

typedef struct node { 
    char *args[25]; 
    struct node *next; 
} Node; 

然後主():

Node *node; 
node = malloc(sizeof(Node)); 
copyArgs(args, node->args); 

然後調用的方法:

void copyArgs(char **args, char **nodeArgs) { 
    int i; 
    for (i = 0; args[i] != NULL; i++) { 
     strcpy(nodeArgs[i], args[i]); 
    } 
} 

出於某種原因,不過,我發現了以下錯誤:

Segmentation fault (core dumped) 

我知道有其他職位重新:分段錯誤使用strcpy的時候,但我無法找到一個針對我的問題。任何建議將不勝感激。先謝謝你!

解決方案編輯: 正如好心指出的那樣,對於需要循環中這樣修正:

for (i = 0; args[i] != NULL; i++) { 
    nodeArgs[i] = malloc(sizeof(char *)); 
    strcpy(nodeArgs[i], args[i]); 
} 

謝謝大家的耐心等待。

+0

分配內存。 –

+0

您爲'Node'分配空間,但是'args'成員未初始化。你有一些指示,但他們沒有指向任何地方。 –

回答

3

char *args[MAXLINE/2+1];是一個char指針數組!

每個指針必須有一個分配的內存空間,然後才能真正將某些內容複製到這些內存空間中。

strcpy(nodeArgs[i], args[i]);在未分配的空間上盲目複製。

你將不得不因爲``ARGS未分配[I]每個args也隨着Node