Zeichen aus char Array in neuem char Array speichern

OP (Firma: Student FHNW) #4852351
Guten Abend

Ich schreibe momentan an einem C-code für meinen ATMEGA2561. für meine 
Frage konnte ich online nichts befriedigendes finden [vielleicht war ich 
auch zu doof].

Nun zu meiner Frage: Ich habe zwei char Arrays und will nun einzelne 
Zeichen aus dem einen Array in das andere Array übertragen. Hier mein 
Code:

#include <stdio.h>

int main(void){

  char txText[120] = "radio tx ";
  char dBuffer[20] = "35929910576AB235";

  for(int i = 0; i==10; i++){
    txText[9+i] = dBuffer[i];

}

  printf("\n%s", txText);

  return 0;

}

Ich habe den Code hier http://ideone.com/8zIU4r und bekomme als ausgabe 
nur "radio tx ". Wo liegt mein Problem das ich einzelne Zeichen nicht in 
einer for-Schleife einzeln übergeben kann (zum beispiel die ersten 10 
zeichen)

Vielen Dank für die Antworten.
Rafael
OP (Firma: Student FHNW)
Für mein Lora´Modul das ich mit meinem MCU anspreche brauche ich am 
Schluss ein "\r\n" ;) Vergessen hätte ich dies nicht, wollte nur rasch 
mein code überprüfen mit beispiel arrays, aber der andere Fehler ist 
recht doof. Nochmals danke ;)
Gast
Rafael E. schrieb:
> Für mein Lora´Modul das ich mit meinem MCU anspreche brauche ich am
> Schluss ein "\r\n" ;) Vergessen hätte ich dies nicht aber der andere
> Fehler ist recht doof. Nochmals danke ;)

auch dann brauchst du noch  eine 0 am ende.
Rafael E. schrieb:
> Guten Abend
>
> Ich schreibe momentan an einem C-code für meinen ATMEGA2561. für meine
> Frage konnte ich online nichts befriedigendes finden [vielleicht war ich
> auch zu doof].
>
> Nun zu meiner Frage: Ich habe zwei char Arrays und will nun einzelne
> Zeichen aus dem einen Array in das andere Array übertragen. Hier mein
> Code:
>
> #include <stdio.h>
>
> int main(void){
>
>   char txText[120] = "radio tx ";
>   char dBuffer[20] = "35929910576AB235";
>
>   for(int i = 0; i==10; i++){
>     txText[9+i] = dBuffer[i];
>
> }
>
>   printf("\n%s", txText);
>
>   return 0;
>
> }
>
> Ich habe den Code hier http://ideone.com/8zIU4r und bekomme als ausgabe
> nur "radio tx ". Wo liegt mein Problem das ich einzelne Zeichen nicht in
> einer for-Schleife einzeln übergeben kann (zum beispiel die ersten 10
> zeichen)
>
> Vielen Dank für die Antworten.
> Rafael

Damit solche (einfachen) Fehler nicht passieren, sollte man statt 
expliziter Schleifen lieber fertige Algorithmen benutzen:

http://en.cppreference.com/w/cpp/string/byte/strcat

Noch besser wäre - auch wenn man sonst gar nicht OOP macht, sich 
wenigstens eine gescheite StringBuffer-Klasse bzw. template zu 
schreiben. Dann gehört so etwas auch ein für alle mal der Geschichte an 
...
Harald N. schrieb:
> Seit wann muss man in C die \0 selber anhängen?

Schon immer, wenn man das char-Array als Array behandelt und nicht als 
String. In der Schleife überschreibt er das '\0' aus der Initialisierung 
von txText und setzt kein eigenes.

Harald N. schrieb:
> Abgesehen davon, dass es
> ja \0 und nicht 0 (und auch nicht '0') ist.
und was ist der dezimale Wert des Character '\0'? :-)

Antwort schreiben

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