如标题中所述,我想将一个字符串从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
不起作用,是否有合理的理由说明为什么会发生这种情况,以及对此修补程序可能的解决方法或解决方案?
谢谢
答案 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);
。它尝试将指向字符数组的指针分配给一个字符。