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

标签 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;
}

我的输入是第一种情况下的债券,并且 詹姆士 债券第二名

最佳答案

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/

相关文章:

c - 读取文件并传递到大型多维数组时出现问题

c - C 中的二维数组?处理二维数组

c++ - 删除 MyClass *Array[10]

ios - 在 Swift 中提取二维数组的一部分

c++ - if else 语句和字符串长度之间的代码性能

java - 在字符串中的特定字符后添加一个空格

c - 如何计算这个阶乘

c - MinGW GCC 无法识别 MEMSTATUSEX?

java - 转换 XX :XX AM/PM to 24 Hour Clock

C- 从文本文件打印行和行