编程练习中的C ++分词错误

时间:2015-02-07 01:20:19

标签: c++ c

我在尝试解决这个编程马拉松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;
}

1 个答案:

答案 0 :(得分:2)

此代码:

char* let;
cin >> let

将用户输入存储到 let指向的内存

这是对未初始化指针的误用。 cin相信您已将其指向有效记忆,但您尚未为其分配任何内容。它指向的地方是未知的。

最简单的解决方案是将let更改为正确的C ++ std::string