我在尝试以下字符串复制时收到段错误:
节点定义:
typedef struct node {
char *args[25];
struct node *next;
} Node;
然后从 main():
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)
我知道还有其他帖子 re: segmentation faults when using strcpy,但我找不到专门针对我的问题的帖子。任何建议将不胜感激。提前致谢!
解决方案编辑: 正如友善指出的那样,for 循环需要这样更正:
for (i = 0; args[i] != NULL; i++) {
nodeArgs[i] = malloc(sizeof(char *));
strcpy(nodeArgs[i], args[i]);
}
谢谢大家的耐心等待。
最佳答案
char *args[MAXLINE/2+1];
是 char 指针数组!
每个指针都必须分配一个内存空间,然后您才能实际将某些内容复制到其中。
strcpy(nodeArgs[i], args[i]);
盲目复制未分配的空间。
您还必须为每个 args
以及 Node
关于c - 段错误复制到节点中的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32683020/