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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren