Textübertragung

Tetsuya

Mitglied
Hallo
Ich will aus einer txt-Datei Text auslesen sortrien und hinterher den unsortierten Text einfach mit dem sortierten Text überschreiben.
Da hab ich noch folgendes Problem Ich musste meine Variablen von CString in char Datenfelder umwandeln weil sonst einige funktionen nicht mitgespielt haben.
zum einschreiben hab ich folgenden Code:
Code:
			if (datfeld[i]->szMB_01 != "") 
				fprintf (stream ,"%c\n",datfeld[i]->szMB_01)

Jetzt wird im Editor bei dem überschreiben nur eine symbol übergeben. Das es nur ein Zeichen ist kann ich noch verstehen weil doch nur das erste zeichen vom Datenfeld geschrieben wird (oder vertuhe ich mich jetzt. Bin Krank und die Medikamente wirken zwar aber das denkvermögen wird angegriffen).
Kann mir das einer erklären und mir vielleicht noch helfen was ich schreiben muss um das ganze Datenfeld in die txt- Datei zu schreiben.
Wäre nett wenn mir einer Hilft.
gruß Tetsuya
 
Hi
Also vorher steht z.B.
Code:
NO=100
TX=Nennwerte laden
SC=(SE 2;ON 01,06;)
GU=EXTERN	{0} (abgleich 0 7 1.0 # 30)	<ABGLEICH_ERROR.DAT>
FE=STOP
END
in der Datei 
Danach steht das drin *kopfkratz*
 ¼
 Ð
 ˜
ü
 `
Ä
4
(
<

´

Die Deklarationen stehen in einer Header und sehen so aus
Code:
#define HUGE_BUFFER		200
	char	szMB_01[MEDIUM_BUFFER];	// Messbereich IEC-String
Zeilen zum kopieren sehen so aus:
(mit ein Paar Schleifen usw. 
					switch (szBuffer[0])
					case'M':
						strcpy( datfeld[i]->szMB_01, szBuffer );
						break;

Sind das genug Informationen?

gruß Tetsuya
 
Das hab ich doch schon versucht.
Dann schreibt er garnichts rein sondern hinterlässt nur leere Zeilen.
Aber was mir auch aufgefallen ist das er immer eine Zeile Setzt egal ob etwas da ist oder nicht und das sollte er nicht machen. Eigentlich
Ist meine kopieranweisung vielleicht auch nicht in ordnung
Hier ist sie nochmal das Wesentliche:
Code:
	FILE * stream;
			while (fgets( szBuffer, HUGE_BUFFER, stream )) 	
			{
	
				ncount = 0;   // 				szBuffer[MEDIUM_BUFFER] = LINEFEED;
				while( szBuffer[ncount] != LINEFEED )
				{

						
					szBuffer[ncount]  = flash;					// Line Feed gegen Stringende
					ncount++;						// Austauschen des Zeichens					
					switch (szBuffer[0])
{
					case'T':
						strcpy( datfeld[i]->szTX, szBuffer );
						break;
					case 'S':
						strcpy( datfeld[i]->szSC, szBuffer );
						break;
}
}
}

"Und seit Tagen stelle ich mir die Frage Was hab ich Falsch gemacht."
 
Also das mit dem Einlesen ist in Ordnung.
Ich hab mir da eine kleine Überprüfung gebastelt.
hat einer Ahnung was falsch ist ich hab da mal rumgedokter und Folgendes raus gemacht Es könnte ja auch an der Zuweisung liegen:
Code:
			if (datfeld[i]->szNO[0] != 0) 
				fprintf (stream ,"NO = %c\n",datfeld[i]->szNO);

Aber jetzt schreibt er garnichts mehr.
spinn ich den Kann mir mal einer sagen was ich falsch mache.

gruß Tetsuya
 
1. Gibt es in diesem Forum eine Funktion, mit der man Code hervorhebt.
2. Solltest du vllt mal einen kompletten Quelltext und nicht irgendwelche Fetzen posten, aus denen man keinen Zusammenhang schließen kann.
3. Nimm den Debugger her und überprüfe wo dein Programm Mist macht.
4. Steht da immer noch %c und nicht %s. Du willst doch einen String ausgeben und kein einzelnes Zeichen.
 
Zuletzt bearbeitet:
Zu 1 ich bin noch recht neu in diesem Forum und hab darüber noch nicht nachgedacht sorry.
zu 2 Mein Quellcode ist etwas länger und umfast mehre Funktionen und eine eigene Header Datei. Das wollte ich eigentilch keinen zumuten (mein Programmierstiel ist nicht astrein).
zu 3 Ich weiß inzwischen wo der Debugger bei Visual c++ ist. Hab aber noch nie damit gearbeite.
zu 4 Ja inzwischen hab ich aus %c in %s wieder umgewandelt. Danke für den Tipp

ps wie macht man Zitate
 
Debugger: An jeder Linie, an der das Programm anhalten soll, drückst du F9 um einen Haltepunkt zu setzen. Dann mit F5 den Debug starten. Ganz unten im VS kannst du dann den Inhalt deiner Variablen und so weiter ansehen.
Spiel einfach ein wenig damit rum, das ist wichtig!
 
Zurück