为什么它给出错误 "segmentation fault"?

Why it is giving error "segmentation fault"?

我想在不同的内存位置输入两个字符串,但在第一个输入后显示错误 "segmentation fault(core dumped")。我不明白这段代码有什么问题。

#include <stdio.h>
#include<iostream>
using namespace std;

int main()
{
    char *str;
    int i;
    scanf("%s",str+0);
    scanf("%s",str+1);
    return 0;
}

但是当我只接受一个输入时它工作正常。

#include <stdio.h>
#include<iostream>
using namespace std;

int main()
{
    char *str;
    int i;
    scanf("%s",str+0);

    return 0;
}

为什么?

因为在 scanf().

中使用它之前,您没有为 str 分配任何内存

您需要使用 malloc()

分配一些内存

当您尝试访问不安全的内存时,您的两个代码都显示 Undefined Behavior