当我编译以下代码并运行它时,代码会运行
#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;
}
我的输入是第一种情况下的债券,并且 詹姆士 债券第二名
最佳答案
array[1]
和 array[1]
是未初始化的指针。因此,您将数据写入无效或未定义的位置。指针需要引用分配的内存。
两个代码片段都不正确,但是关于未初始化的指针,它可能包含合法地址,也可能包含无效地址,但无论如何该地址都未定义。
char array[2][64];
scanf("%63s",array[0]);
scanf("%63s",array[1]);
关于c - 在 char* 数组中存储字符串时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45017284/