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
:
Verschoben durch User
Rafael E. schrieb: > Nun zu meiner Frage: ich sehe keine Frage. aber das würde ich mir noch mal genauer anschauen
1 | for(int i = 0; i==10; i++){ |
stimme Peter zu... so wie es da steht wird die Schleife niemals ausgeführt...
Ups, dieser Fehler ist peinlich. Sollte ein Ungleichheitszeichen sein. Aufgrund eines so banalen Fehler habe ich jetzt 30min zeit verschwendet...
:
Bearbeitet durch User
Rafael E. schrieb: > Ups, dieser Fehler ist peinlich. sind aber noch mehr drin, String sollte am ende eine 0 haben.
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 ;)
:
Bearbeitet durch User
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.
Dann muss eben nach dem "\r\n" die 0 an den String. Ohne den Stringterminator kannst du die C-Standardfunktionen für Strings nicht benutzen.
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 ...
:
Bearbeitet durch User
Ich hab da mal eine grundsätzliche Frage. Muß man in C nicht auch den ursprünglichen Pointer speichern und am Ende der printf-Funktion übergeben oder ist das hier nicht nötig?
Stephan C. schrieb: > Ich hab da mal eine grundsätzliche Frage. > Muß man in C nicht auch den ursprünglichen Pointer speichern und am Ende > der printf-Funktion übergeben oder ist das hier nicht nötig? Worauf bezieht sich das?
Stephan C. schrieb: > Muß man in C nicht auch den ursprünglichen Pointer speichern und am Ende > der printf-Funktion übergeben oder ist das hier nicht nötig? was meinst du damit?
Schon gut. Ich hab in der Vergangenheit einmal Strings mithilfe von char-Pointern realisiert. Da musste ich immer den ursprünglichen Pointer-Wert zwischenspeichern, um an die Stelle wieder zurückzukommen.
Peter II schrieb: > Rafael E. schrieb: >> Ups, dieser Fehler ist peinlich. > > sind aber noch mehr drin, String sollte am ende eine 0 haben. Seit wann muss man in C die \0 selber anhängen? Abgesehen davon, dass es ja \0 und nicht 0 (und auch nicht '0') ist.
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'? :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.