Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben
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.
Geschrieben

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

Geschrieben
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.

  • 2 Wochen später...
Geschrieben

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...