Veröffentlicht 3. November 201113 j Hi, ich hab eine kleine Frage und zwar wie kann ich Zeichenketten inklusive Formatierungszeichen ausgeben? unsigned char buf[4096]; in der folgenden Zeichenkette gespeichert ist "S-R-R -04.75 +00.00 E\r\nS-K-R +07.84 +07.82 E\r\n\0\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0N\0O\0P\0Q\0R\0S\0T\0U\0V\0W\0X\0Y\0Z\0[\0\\\0]\0^\0_\0`\0A\0B\0C\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0\0\0$\0!·\224|\024ò\"\0h\237\221|ú\237\221|\024\002\0\0\0\0$\0\001\0\0\0~\0\177\0¬ \201\0\0\0\0\0\036 & ! "... Hier wäre mir die Ausgabe auf der Konsole und die Ausgabe in einer Datei wichtig. printf und fprintf formatiert mir den Text natürlich immer. Gruß DonDOm
4. November 201113 j unsigned char buf1[4096]; char buf2[] = "S-R-R -04.77 +00.00 E\r\nS-K-R +07.84 +07.82 E\r\n\0\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0N\0O\0P\0Q\ 0R\0S\0T\0U\0V\0W\0X\0Y\0Z\0[\0\\\0]\0^\0_\0`\0A\0B\0C\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0 \0\0$\0!·\224|\024ò\"\0h\237\221|ú\237\221|\024\00 2\0\0\0\0$\0\001\0\0\0~\0\177\0¬ \201\0\0\0\0\0\036 & ! ..."; strcpy((char*)buf1,buf2); wenn ich aber jetzt einen Braekpoint setze unterscheiden sich die beiden Zeichenketten von bu1 und buf2. Warum ist das so? Kann mir hierbei jemmand weiterhelfen? Gruß DonDom
4. November 201113 j Hi, ich hab eine kleine Frage und zwar wie kann ich Zeichenketten inklusive Formatierungszeichen ausgeben?Wenn du mit "Formatierungszeichen" die mit Backslash eingeleiteten Escape-Sequenzen meinst: Gar nicht. Diese Darstellung existiert nur in deinem Quellcode. Schon der Compiler wandelt das um, das hat mit printf nichts zu tun. Du wirst dir eine Funktion schreiben müssen, die die betroffenen Zeichen durch die jeweiligen Texte ersetzt. wenn ich aber jetzt einen Braekpoint setze unterscheiden sich die beiden Zeichenketten von bu1 und buf2. Warum ist das so?Weil strcpy abbricht, wenn es ein Nullbyte vorfindet, denn das ist die Endmarkierung für C-Strings.
4. November 201113 j Ok, danke. Vielleicht sollte ich mein grundsätzliches Problem erläutern. Momentan will ich mich zwischen die Kommunikation von 2 Geräten schalten, diese sind über eine Rs232 Schnittstelle verbunden. Bisher kann ich den "Stream" des sendenden Gerätes capturen. Allerdings kann ich dies nicht sinnvoll speichern, da der dieser viele Escape-Squenzen beinhaltet. Gibts ne einfache Möglichkeit dies zu speichern. Mein erdachter Programmablauf 1. Capturen 2. Verändern (die im Stream vorkommende Zahlenwerte) 3. veränderte Daten an das empfangende Gerät senden. Kann mir jemmand einen groben "Fahrplan" aufzeichenen? oder vielleicht hat jemand die schon gemacht und stellt mir seinen Quellcode zur Verfügung? Gruß DonDom
4. November 201113 j Allerdings kann ich dies nicht sinnvoll speichern, da der dieser viele Escape-Squenzen beinhaltet.Das kann nicht sein. Escape-Sequenzen gibt es ausschließlich im Quellcode. Vermutlich benutzt du nur irgendwelche Funktionen, die eigentlich für nullterminierte Strings gedacht sind, wie strcpy.
16. November 201113 j Ok. Die Zeichenkette enthält einige nicht druckbare Zeichen. Um die Zeichenkette zu verändern habe ich nur diese durckbaren Zeichen und den Rest der Zeichenkette unangetastet gelassen. Nun funktioniert auch meine erste Testanwendung. Signal abfangen -> verändern -> senden. Danke
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.