Ich versuche, ein C++ - Programm zum Lesen von Eingaben aus einer Datei, Leerzeichen vor Trennzeichen und Schreiben in eine andere Datei. Beispiel: Eingang: int main() Ausgang: int main()Segmantation Fehler in C++, keine Ausgabe
#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;
}
debuggen ich cout an vielen Orten verwendet haben. Ich bekomme dafür einen Segmentierungsfehler und selbst der cout am Einstiegspunkt von main wird nicht angezeigt.
Versuchen Sie, in einem Debugger auszuführen, um den Absturz in Aktion zu erfassen. Dadurch können Sie feststellen, wo in Ihrem Code der Absturz auftritt, und Sie können auch die Werte der beteiligten Variablen untersuchen. –
Um auch zu garantieren, dass "cout" -Anweisungen angezeigt werden, fügen Sie eine "endl" -Anweisung nach der Ausgabe ein. –
Codeblocks -warning: GDB: Kontrollterminal konnte nicht gesetzt werden: Operation nicht erlaubt –