ein Komma in ein Char nachträglich einfügen

Persönliche Seite #1093614
Lesenswert?

Geht nicht direkt. Weil in char XXX_text[4] ein Element zu wenig Platz 
ist: 3 Ziffern + 1 Nullbyte = 4. Mit Komma sind es aber 5 Zeichen.

Was tun? Man kann die drei Ziffern in ein um 1 grösseres Feld umkopieren 
und dabei z.B. zwischen der 1. und der zweiten Ziffer das Komma 
kopieren. Oder je nach Programmablauf, lässt man das Umkopieren sein und 
gibt die Ziffern und das Komma direkt z.B. auf LCD oder UART aus.
Gast #1094607
Lesenswert?

Danke für die schnelle Antwort!
genau um das Umkopieren von Bytes innerhalb eines Char ging es mir..in 
Assembler hätte ich einfach das eine oder 2 bytes ausseinandergeschoben 
und ein Komma eingefügt. gibt es in C auch eine Möglichkeit/Befehl Bytes 
in einem Char hin und her zu schieben?
Gast #1094643
Lesenswert?

Mach doch das Array einfach etwas größer, damit Platz für das Komma
bleibt:
1
char XXX_text[5];

Um bspw. das Komma vor die letzte der drei Ziffern zu stellen, machst du
1
XXX_text[4] = '\0';        // Stringende nach dem 4. Zeichen
2
XXX_text[3] = XXX_text[2]; // letzte Ziffer eins nach rechts schieben
3
XXX_text[2] = ',';         // ein Komma an die freie Stelle schreiben
Gast #1094844
Lesenswert?

> genau um das Umkopieren von Bytes innerhalb eines Char ging es
> mir..

In einem char steht nur ein Byte.

> gibt es in C auch eine Möglichkeit/Befehl Bytes in einem Char hin und
> her zu schieben?

Du meinst in einem Array. Es gibt die Funktion memmove.
Gast #1095926
Lesenswert?

>>> XXX[0] ist ja schliesslich auch noch ein Char mit nem Byte Platz
>
> Nö, das ist ein Array mit 0 Elementen,

Nein. Es inidizert das erste Element des Arrays. Wie groß das ist, kann 
man an dieser Stelle nicht sagen.
Persönliche Seite #1096036
Lesenswert?

Rolf Magnus wrote:
>>>> XXX[0] ist ja schliesslich auch noch ein Char mit nem Byte Platz
>>
>> Nö, das ist ein Array mit 0 Elementen,
>
> Nein. Es inidizert das erste Element des Arrays. Wie groß das ist, kann
> man an dieser Stelle nicht sagen.

char XXX[0];
Ist ein Array mit 0 Elementen. (Und so aufgefasst, passt es auch besser 
in den Kontext des Ursprungsposts).

Zugegeben, das ist nicht genau das, was oben steht. Daran sieht man mal 
wieder, dass man sich doch immer genau ausdrücken sollte.
Gast #1096331
Lesenswert?

> char XXX[0];

Das 'char' hast du jetzt dazugedichtet. Vergleiche mit:

>> XXX[0] ist ja schliesslich auch noch ein Char mit nem Byte Platz

> Zugegeben, das ist nicht genau das, was oben steht. Daran sieht
> man mal wieder, dass man sich doch immer genau ausdrücken sollte.

Oder genau lesen ;-)

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