Я пытаюсь сделать программу на C++ для чтения ввода из файла, поместить пробелы перед разделителями и записать в другой файл. Пример: Input: INT основной() Выход: INT основной()Ошибка segmantation в C++, без вывода
#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 в точке входа main не отображается.
Попробуйте запустить в отладчике, чтобы поймать крах в действии. Это поможет вам найти, где в вашем коде произошел сбой, а также позволить вам изучить значения задействованных переменных. –
Кроме того, чтобы гарантировать, что вы выведете заявления 'cout', поставьте инструкцию' endl' после вывода. –
Codeblocks -warning: GDB: Не удалось установить управляющий терминал: операция не разрешена –