将字符串存储在char *数组中时出错

时间:2017-07-10 16:29:32

标签: c arrays string

当我编译以下代码并运行它时代码运行

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
    char* array[1];
    scanf("%s",array[0]);
    return 0;
}

但以下代码无法运行。它显示了分段错误。是什么原因。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
    char* array[2];
    scanf("%s",array[0]);
    scanf("%s",array[1]);
    return 0;
}

我的输入是第一种情况下的债券 詹姆士 第二次债券

1 个答案:

答案 0 :(得分:0)

array[1]array[1]是酉指针。因此,您将数据写入无效或未定义的位置。指针需要引用已分配的内存。

两个代码片段都不正确,但是关于一个单元化指针的事情,它可能包含一个合法地址或一个无效的地址,但无论如何都没有定义地址。

char array[2][64];
scanf("%63s",array[0]);
scanf("%63s",array[1]);