2015-09-20 73 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