Ein- und Auslesen in char-Array

DeChecka

Erfahrenes Mitglied
Hi Leute!
Habe folgendes Problem:
Ich möchte Wörter aus einer Textdatei in ein zweidimensionales char-Array einlesen.
Dabei interessieren mich nur Wörter mit Buchstaben aus dem normalen Alphabet (also A-Z bzw. a-z) und der Umlaut "ü".

Erstmal die Deklarationen:
Code:
char lesen[40][34], zeichen;
int i=0, j=0;


Das hab ich mal so gemacht:
Code:
ifstream generator("Generator.txt");
 while(generator)/* Einlesen der Teamnamen aus "Generator.txt" */
 {
  zeichen = generator.get();
  if(((zeichen >= 65) && (zeichen <= 90)) || ((zeichen >= 97) && (zeichen <= 122))) /* Überprüfung auf A-Z bzw. a-z */
  {
   lesen[i++][j] = zeichen;
   lesen[i][j] = '\0';
  }
  if(zeichen == 'ü') /* Spezialfallbehandlung "ü": Umformen zu "ue" */
  {
   lesen[i++][j] = 'u';
   lesen[i++][j] = 'e';
   zeichen = 'e';
   lesen[i][j] = '\0';
  }
  if(((!((zeichen >= 65) && (zeichen <= 90))) && (!((zeichen >= 97) && (zeichen <= 122)))) && (i != 0))
  {
   ++j;
   i = 0;
  }
 }
 generator.close();
Die ganzen logischen Operatoren bei den Bedingungen stimmen, da bin ich mir sicher. Da braucht ihr euch also nicht dran aufzuhalten.

Nun will ich allerdings die Wörter aus dem char-Array wieder auslesen und in eine andere Textdatei packen.
Das hab ich so versucht:
Code:
ofstream tippspieltext("Tippspieltext.txt");
 i = 0;
 j = 0;
 while(j <= 34)
 {
  tippspieltext << lesen[i][j];
  if((lesen[i][j] == '\0') && (i != 0))
  {
   if(j%2 == 0)
    tippspieltext << " ";
   if(j%2 != 0)
    tippspieltext << "\n";
   ++j;
   continue;
  }
  ++i;
 }
 tippspieltext.close();
Allerdings läuft das nicht, in der Datei stehen nur einzelne Buchstaben und Wortfetzen mit einer Menge von Leerzeichen...

Ich weiß nicht, an was das liegt, aber das Programm schreibt nur Wortfetzen in die Textdatei...

Ich hoffe, ihr könnt mir weiterhelfen!

MfG
DeChecka
 
moin


Bist du sicher das nach dem einlesen der Datei, das richtige in "lesen"steht?
Poste auch mal die Datei die du einliesst, dann kann ich das eben testen und den/die Fehler suchen.


mfg
umbrasaxum
 
Hmm, also einen Fehler hab ich mal gefunden...
Ich hab hier beim Schreiben in eine Datei das "i = 0" vor dem "continue" vergessen... Allerdings geht es immer noch net ganz so, wie ich es wünsche, aber es sind schon manche Wörter erkennbar...
Es stehen jetzt fast immer zwei vollständige Wörter in einer Zeile, aber es sind immer zwei Leerzeichen statts einem dazwischen.
Code:
while(j <= 34)
 {
  tippspieltext << lesen[i][j];
  if((lesen[i][j] == '\0') && (i != 0))
  {
   if(j%2 == 0)
    tippspieltext << " ";
   if(j%2 != 0)
    tippspieltext << "\n";
   ++j;
   i = 0;
   continue;
  }
  ++i;
 }

Hoffe, ihr könnt mir weiterhelfen!

MfG
DeChecka
 
Ok, hab den Fehler gefunden, hab beim zweiten Wert der Arraydeklaration einfach bisschen größer (36) einstellen müssen.

Danke noch trotzdem @umbrasaxum;)!

MfG
DeChecka
 
Eine Frage habe ich aber doch noch...
Code:
cout << "Wann ist Abgabefrist (tt.mm.jj., Stunden:Minuten Uhr)?" << endl;
getline(cin, abgabe, '\n');
cin.ignore();
Deklaration von "abgabe":
Code:
string abgabe;
Ich kann aber "abgabe" weder in Dateien schreiben, noch auf dem Bildschirm ausgeben...
So:
Code:
cout << abgabe;
geht es also leider nicht...
An was kann das liegen?

MfG
DeChecka
 
Hmmm, das will bei mir einfach nicht funktionieren...
Ich mache zum Test:
Code:
cout<< abgabe.c_str();
getch();
Aber der String wird nicht angezeigt...

MfG
DeChecka
 
Bei mir sieht das jetzt so aus:
Code:
getline(cin, abgabe, '\n');
cin.ignore();
cout << abgabe.c_str();
cin.get();

Das Komische daran ist: "cin.get()" führt er gar nicht aus... Weiter oben im Programm verwende ich "cin.get()" auch mal, da geht das aber normal, bis auf das, dass eine Leerzeile gelassen wird.
Ich hab mich auch schon gewundert, wieso ich mit "cin.get(abgabe, sizeof(abgabe))" - hierzu hatte ich abgabe natürlich als char-Array definiert - das nicht einlesen kann...

Das ist echt Mist.
Was ist da nur los?

MfG
DeChecka
 
Zurück