Moin, welche c-Funktion eignet sich am Besten, wenn ich bei einem String, der von einem AVR empfangen wird, die ersten drei Zeichen entfernen möchte. Des Weiteren möchte ich auch Sonderzeichen auf diesem Weg übertragen. Dies habe ich wie folgt übertragen "xyz\337" Eigentlich sollte ein °-Zeichen dabei herauskommen, macht es jedoch nicht. Gruß
Wenn du in ein anderes char-Array kopieren willst, kannst du bei Quelle 3 dazu addieren. Wenn es im selben Array sein sollte, dann memmove. Selber schreiben ist aber auch nicht schwer. Woher hast du den Code für das Grad-Zeichen? Und wie steht der Text im Code? Ist das eion Stringliteral oder eine Nutzereingabe?
Ich übertrage per BT Verbindung einen String, der dann auf einen OLED ausgegeben werden soll. Daher kommt auch der Code für das Grad-Zeichen. Ich habe aber scheinbar das Problem, dass schon \ nicht als Sequenzbeginn interpretiert wird, sondern als Zeichen auf dem LCD übergeben wird. Soll alsoe ein Stringliteral darstellen.
:
Bearbeitet durch User
Marco G. schrieb: > Ich habe aber scheinbar das Problem, dass schon \ nicht als > Sequenzbeginn interpretiert wird, Wenn das im String steht, steht das im String drin. Als "Sequenzbeginn interpretiert" wird es nur im C/C++-Sourcecode.
Wenn im Quelltext ein Stringliteral steht, z.B. "xyz\337", dann macht der C-Compiler daraus einen String mit 4 Zeichen + den Null-Terminator. Wenn du aber diese 7 Zeichen (3Buchstabe, 1 Sonderzeichen, 3 Ziffern) über eine Schnittstelle (BT, Tastatur, ..) empfängst, hast du 7 Zeichen.
Marco G. schrieb: > welche c-Funktion eignet sich am Besten, wenn ich bei einem String, der > von einem AVR empfangen wird, die ersten drei Zeichen entfernen möchte. Das einfachste und speichersparendste ist:
1 | char* ergebnis = quelle + 3; |
Das entfernt zwar nicht die drei ersten Zeichen, aber überspringt sie beim lesen.
DirkB schrieb: > Wenn im Quelltext ein Stringliteral steht, z.B. "xyz\337", dann macht > der C-Compiler daraus einen String mit 4 Zeichen + den Null-Terminator. > > Wenn du aber diese 7 Zeichen (3Buchstabe, 1 Sonderzeichen, 3 Ziffern) > über eine Schnittstelle (BT, Tastatur, ..) empfängst, hast du 7 Zeichen. Ok, das ist soweit klar. Kann ich an beliebiger Stelle des Strings einen weiteren String einfügen? Es würde ja gehen, wenn ich mein Zeichen im Quellcode ablege und dann nur noch an eine bestimmte Stelle hinzufüge.
:
Bearbeitet durch User
Marco G. schrieb: > Kann ich an beliebiger Stelle des Strings einen > weiteren String einfügen? Ja das geht. Eine fertige Funktion (aus der Standard-Library) gibt es dafür nicht. Es ist aber nicht schwierig. Ein einzelnes Zeichen kannst du ganz leicht ersetzen. (Wenn es ein Array ist. Bei einem Stringliteral geht es nicht, da es meist in geschützem Speicherbereich liegt) Marco G. schrieb: > Ok, das ist soweit klar. Wirklich? Deine weiteren Fragen lassen mich daran zweifeln. Du musst dafür Arrays und Strings in C begriffen haben. Aber dann würdest du diese Fragen nicht stellen.
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.