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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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