mysteriöse Zeichen im String

sTEk

Erfahrenes Mitglied
Hallo!

Ich lese meine COM-Schnittstelle in Visual C++ 6.0 mittels einer Serialfunktion von TheCodeProject aus. Das klappt so auch wunderbar. Das Mysterium fängt erst bei der Ausgabe der eingelesenen Zeichen an:
Irgendwie schleichen sich immer 3 Zeichen an meine eingelesene Kette.
Das Wort "Test" kommt über den COM-Port rein (von einem PIC), wird aber komischerweise in meinem Programm als "Test|%C" ausgegeben. Die Übertragung zwischen PIC und PC klappt, das hab ich mit einem anderen Programm bereits getestet, der Fehler liegt also bei mir. *Mist*
Dummerweise bringt er mir die richtige Größe der Variable, wenn ich mir diese ausgeben lasse (hier 4).
Was mache ich verkehrt?

Hier mal mein Code-Stückchen (so klappt alles, also ich hab nichts vergessen einzubinden):
Code:
 	CWerteNeu Dlg;						 //das Dialogfenster, in dem alles angezeigt wird
  	CA1Doc* pDoc = GetDocument();
  	ASSERT_VALID(pDoc);
  
  	CSerialPort port;
  
  	port.Open(1, 19200, CSerialPort::NoParity, 8, 
  	  CSerialPort::OneStopBit, 
  	  CSerialPort::NoFlowControl);
  
  	char cominhalt[4];
  	port.Read(cominhalt,4);
      Dlg.m_nwausgabe=cominhalt;		   //Die anzeigende (schreibgeschützte) Textbox
  	int gross=sizeof(Dlg.m_nwausgabe);
      Dlg.m_nwausgabe2=gross;			  //Die Größe der Variable

edit: Ach so...die beiden Ausgabevariablen laufen als CString. Eine Änderung der cominhalt-Variable in BYTE bringt das gleiche Ergebnis.
 
Zuletzt bearbeitet:
Du hast charinhalt[4] definiert und liest 4 Zeichen ein.
Ich nehme an, dass Dlg.m_nwausgabe ein Null-terminierter String sein soll. Das Endekriterium 0 fehlt in cominhalt aber.
du muss cominhalt[5] definieren und als letztes Zeichen '\0' setzen nach dem Einlesen.
cominhalt[4] = '\0';
 
Ich danke Dir...klappt wunderbar.
Aber mal die Frage zum Verständnis:
Wie lege ich denn Fest, dass es kein Null-terminierter String sein soll?
 
Zurück