c - 段错误复制到节点中的字符串数组

标签 c

我在尝试以下字符串复制时收到段错误:

节点定义:

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/

相关文章:

c - 当 fgets 在输入中间遇到 EOF 时会发生什么?

c - 使用c打包文件,以便可以解压为原始文件

c - 当我向它添加 0.1 时, float 不会改变

c - 确定变量内容的字节长度

c - 如何在 C 中打印函数参数?

android - cpu-features.h 没有这样的文件或目录 webrtc Android 构建

我可以在线程内接受()吗

c - 如何检查特定字符的字符串

c++ - 在 Arm 板上编译的 makefile 编译错误

c - 在 for 循环中覆盖值