我在尝试解决这个编程马拉松C ++练习时遇到了分段错误错误,但我无法在任何地方找到错误:
#include <iostream>
#include <fstream>
#include <string>
#include <map>
#include <vector>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(void)
{
int m,n,i,di,x,y;
char* let;
cin >> n >> m;
x=0;
y=0;
for (i = 0; i < n; i++)
{
cin >> let >>di;
if ((strcmp(let,"S"))||(strcmp(let,"O"))){
di=(-di);
}
if ((strcmp(let,"N"))||(strcmp(let,"S")))
{
x=+di;
}
if ((strcmp(let,"L"))||(strcmp(let,"O")))
{
y=+di;
}
if ((y*y)+(x*x)>(m*m))
{
cout << "1";
return 0;
}
}
cout << "0";
return 0;
}
答案 0 :(得分:2)
此代码:
char* let;
cin >> let
将用户输入存储到 let
指向的内存。
这是对未初始化指针的误用。 cin
相信您已将其指向有效记忆,但您尚未为其分配任何内容。它指向的地方是未知的。
最简单的解决方案是将let
更改为正确的C ++ std::string
。