Forum: Compiler & IDEs strcpy bei festen String Längen - aber ohne '\0' Zeichen?


von John S. (student)


Lesenswert?

Hallo,

ich möchte in eine Structure Teil-Strings kopieren, aber ohne das '\0' 
Zeichen, da ich mir sonst das erste Byte des folgenden Structure-Teils 
überschreibe.

Empfehlt Ihr mir, das Byte per Byte in einer for Schleife per Zuweisung 
zu machen oder gibt es eine "strcpy" ähnliche Funktion (vielleicht 
"StrInsert()") in der man die länge des einzufügenden Teilstrings 
mitgibt und somit kein '\0' als Abschluss braucht ?

Grüsse

von yalu (Gast)


Lesenswert?

> gibt es eine "strcpy" ähnliche Funktion (vielleicht "StrInsert()")
> in der man die länge des einzufügenden Teilstrings mitgibt und somit
> kein '\0' als Abschluss braucht ?

Vielleicht
1
  void *memcpy(void *dest, const void *src, size_t n);

von Peter (Gast)


Lesenswert?

Ein gutgemeiter Ratschlag:

Ändere unbedingt Deinen Strukt, so dass das '\0' Charakter immer Platz 
hat.

von John S. (student)


Lesenswert?

Peter wrote:
> Ein gutgemeiter Ratschlag:
>
> Ändere unbedingt Deinen Strukt, so dass das '\0' Charakter immer Platz
> hat.

nee - das ist nicht so gut. Ich möchte nämlich ein Telegramm füllen, das 
keine  Ascii '\0' enthalten soll. Die (Teil-)Structures liegen 
hintereinander. Natürlich beende ich den Telegramm String (zwecks 
Bearbeitung im UART) mit einem '\0' - aber innerhalb der Structure (die 
über union mit Teilstrings strukturiert ist) möchte ich keine '\0' 
sehen!

Trotzdem - Danke

>Vielleicht
>
>  void *memcpy(void *dest, const void *src, size_t n);

Werde ich mir mal anschauen - auch vielen Dank an Dich!

Grüsse

von Oliver (Gast)


Lesenswert?

strncpy tuts auch.

Oliver

von John S. (student)


Lesenswert?

Oliver wrote:
> strncpy tuts auch.
>
> Oliver

... und genau das hatte ich gesucht - vielen Dank + Grüsse

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.