【发布时间】:2017-10-18 03:48:14
【问题描述】:
很好奇这个 strcpy 出了什么问题。
int main(void){
char *history[10];
for(int i = 0; i < 10; i++){
history[i] = NULL;
}
char line[80];
fgets(line,80,stdin);
strcpy(history[0],line); //This line segfaults
}
【问题讨论】:
-
你在做
strcpy(NULL, line)。 -
您忘记将存储分配给
history[0],所以它当然会爆炸。您可以改用history[0] = strdup(line)。 -
通过
char history[10]修改history的定义,使用strcpy(history, line),因为char *声明history的元素是一个指针,而不是一个字符。
标签: c segmentation-fault strcpy