DonDom Geschrieben 3. November 2011 Geschrieben 3. November 2011 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 Zitieren
DonDom Geschrieben 4. November 2011 Autor Geschrieben 4. November 2011 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 Zitieren
Klotzkopp Geschrieben 4. November 2011 Geschrieben 4. November 2011 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. Zitieren
DonDom Geschrieben 4. November 2011 Autor Geschrieben 4. November 2011 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 Zitieren
Klotzkopp Geschrieben 4. November 2011 Geschrieben 4. November 2011 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. Zitieren
DonDom Geschrieben 16. November 2011 Autor Geschrieben 16. November 2011 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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.