int-Werte in Zeichenkette einfügen

Gast #166031
Lesenswert?
• ▲
▼
Hallo an alle!

Die 16-Bit-Integerwerte eines UDP-Headers sollen in eine Zeichenkette
geschrieben werden.

Das tut es auch recht gut. Nur nach dem zweiten int-Wert hört die
Zeichenkette auf.

Das der Code recht seltsam anmutem mag, ligt daran, daß ich damit
experimentiere. ;-/

Warum wird der Header nicht ganz in den char-String geschrieben? Bzw.
wie kann man es eleganter machen?

Danke Markus
Angehängte Dateien:
Gast #166032
Lesenswert?
• ▲
▼
Ich nochmal!

Ich habe herausgefunden, daß der Speicherwert 0x00 als NUL
interpretiert wird und dann die Übertragung abbricht.

Kann ich davon ausgehen, daß alle Werte richtig gespeichert wurden und
ich den Sting auch als UDP-Header verwenden kann?

Wie kann ich das Problem beseitigen, daß die Übertagung immer bei 0x00
abbricht?

Gruß Markus
Gast #166033
Lesenswert?
• ▲
▼
Ich habe den Code nicht näher angesehen, aber..
Strings werden in C eben mit \0 (0x0) beendet.
Das heißt, alle Stringfunktionen terminieren automatisch sobald eine
\0 gefunden wird.
Abhilfe:  Keine Stringfunktionen zum Lesen des Arrays verwenden.
Zum Befüllen des Arrays keine Funktionen der str-klasse verwenden
(strcpy, strcat etc.)

Reiner
Gast #166034
Lesenswert?
• ▲
▼
Hallo Reiner!

Danke für die Antwort.

Welche Funktionen gibt es, die ich zum Zugriff (lesen/schreiben)
verwenden kann? Ist es möglich, daß man ein Word-Array oder ein
Byte-Array anstelle eines Char-Array's verwendet?

Gruß Markus
Gast #166035
Lesenswert?
• ▲
▼
Ich kenne Deine 'puts'-Funktion zwar nicht, aber sie lässt anmuten,
daß sie eine sog. Stringfunktion ist, d.h. beim Lesen einer 0
abbricht!

Verwende einfach einen Zähler und 'putc', falls das existiert.
In etwa so:

[..]
    while(ctr < UDP_FRM_LEN)
        putc(UDP_Frame[ctr]);
[..]

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.