将字符串从指针复制到指针数组中的索引

时间:2018-09-26 12:21:47

标签: c arrays pointers

如标题中所述,我想将一个字符串从char指针复制到char指针数组中的位置。进行strcpy()时,输出会导致段错误,但不知道为什么会发生。

缩写代码如下:

void make_history(char *entry) {
    //static char past_entries[10][10];
    static char *past_entries[10];
    static int index = 0;
    static int array_index = 0;

    char *input;
    if((input = strchr(entry, '\n')) != NULL)
        *input = '\0';

    if(strcmp(entry, "history") != 0) {
        strcpy(past_entries[index], entry);
        *past_entries[index] = &entry;
        index = (index + 1) % 10;
        array_index++;
    }
}

与尝试返回2d数组(这也非常棘手)相比,我认为将日期从entry复制到指针数组past_entries中的位置会更容易。同样,strcpy不起作用,是否有合理的理由说明为什么会发生这种情况,以及对此修补程序可能的解决方法或解决方案?

谢谢

1 个答案:

答案 0 :(得分:1)

在您的示例中,handleEmailInput = e => { const email = e.target.value; this.setState({ email: email }, () => console.log(this.state.email)); this.checkFormStatus(); }; 只是一个指针数组,但是您没有为它们分配任何内存(最初指向past_entries)。然后,您尝试写入这些位置,从而导致崩溃。

要解决此问题,只需在尝试将字符串复制到其中之前分配一些内存:

NULL

当然,您最后不要忘记释放所有这些。

哦,删除该行:past_entries[index] = malloc(strlen(entry) + 1); 。它尝试将指向字符数组的指针分配给一个字符