为什么它给出错误 "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。
我想在不同的内存位置输入两个字符串,但在第一个输入后显示错误 "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。