ein Komma in ein Char nachträglich einfügen

Persönliche Seite #1093614
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
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
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
> 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
>>> 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
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
> 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

Eine eigene Frage? Dieser Thread ist über 17 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.