c ++中的segmantation fault,没有输出

时间:2016-04-17 08:52:11

标签: c++ segmentation-fault

我试图制作一个C ++程序来读取文件中的输入,在分隔符之前放置空格,然后写入另一个文件。 例: 输入: int main() 输出: int main()

#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;

fstream oup, inp;
int dsize = 18;
char delim[] = {',',  ' ', '\n', '\t', '\"', '(', ')', '{', '}',
                '\'', '[', ']',  '+',  '-',  '*', '&', '/', '%'};

bool isDelim(char c) {
  for (int i = 0; i < 18; i++)
    if (c == delim[i])
      return true;
  return false;
}

void chartost(string a) {
  int d = 0;
  if (a.length() == 1)
    oup << a << " ";
  else {
    for (unsigned i = 0; i < a.length(); i++) {
      if (isDelim(a[i])) {
        d = 1;
        oup << a.substr(0, i) << " ";
        chartost(a.substr(i, a.length()));
      }
    }
    if (d == 0) {
      oup << a << " ";
    }
  }
}

int main() {
  cout << "Initial Point";
  inp.open("test.c", ios::in);
  oup.open("testspace.c", ios::out);
  string a;
  cout << "before isopen";
  if (inp.is_open() && oup.is_open()) {
    while (inp >> a) {
      cout << a;
      chartost(a);
    }
    cout << "after operations \n";
    inp.close();
    oup.close();
  }
  return 0;
}

要调试我在许多地方使用过cout。 我为此得到了分段错误,甚至没有显示主要入口点的cout。

1 个答案:

答案 0 :(得分:1)

代码很乱,很难发现错误,但是我注意到你的chartost函数是递归的,但是当递归退出时它不会终止。第一次调用的for循环将在代码在字符串的其余部分上递归之后处理字符串的其余部分。我会在那里开始寻找你的问题。