kopieren von Zeichen aus einer Zeichenfolge in einer anderen Zeichenfolge in C
Ich habe einen string AAbbCC, was ich brauchen, ist das kopieren die ersten beiden, und fügen Sie Sie in ein array kopieren Sie dann die zwei mittleren und fügen Sie Sie in ein array und schließlich die letzten zwei, und fügen Sie Sie in ein array.
dies ist, was ich Tue:
char color1[2];
char color2[2];
char color3[2];
strncpy(color1, string, 2); //I take the first two characters and put them into color1
//now I truncate the string to remove those AA values:
string = strtok(string, &color1[1]);
//and when using the same code again the result in color2 is bbAA:
strncpy(color2, string, 2);
es gibt diese bb aber auch AA aus vorherigen .. obwohl das array hat nur zwei stellen, wenn ich mit strtol auf, dass es mich gibt einige großen Wert und nicht 187 die ich Suche .. wie Sie es loswerden ? oder, wie es funktionieren auf andere Weise? Jede Beratung wäre geschätzt.
char * - strings sind null-terminiert. Wenn Sie verwenden möchten colorX in Ihrem code als strings (die ich nehme an, Sie tun, wenn die Konvertierung 0xbb 187), die Sie benötigen, um Sie zu verlängern, indem ein byte Anzeige eingestellt dieses byte auf 0.
Wenn Sie nur wollen, überspringen 2 chars, warum gehst du nicht einfach etwas tun, wie
ja danke Euch beiden .. ich habe es herausgefunden 🙂 und @Anthales danke für den Hinweis hin, dass ich nicht brauchen, strtok überhaupt
Sie erwähnen, dass Sie suchen, 187, aber das ist nicht deutlich aus dem rest der Frage. Warum nutzen Sie nicht
eigentlich war ich auf der Suche für ein tool, schneiden Sie die Farbe vertreten durch hexadezimal-Werte in 3 verschiedene Werte, dann werde ich umwandeln in decimal Werte (RGB), aber ich bekam schon, dass mit dem hinzufügen von ein Platz für '\0' in mein array 🙂
Wenn Sie nur wollen, überspringen 2 chars, warum gehst du nicht einfach etwas tun, wie
strncpy(color2, string+2, 2); color2[2] = '\0'
etc?ja danke Euch beiden .. ich habe es herausgefunden 🙂 und @Anthales danke für den Hinweis hin, dass ich nicht brauchen, strtok überhaupt
Sie erwähnen, dass Sie suchen, 187, aber das ist nicht deutlich aus dem rest der Frage. Warum nutzen Sie nicht
strtoul
auf der größeren Zeichenfolge statt schneiden Sie es in Stücke zuerst?eigentlich war ich auf der Suche für ein tool, schneiden Sie die Farbe vertreten durch hexadezimal-Werte in 3 verschiedene Werte, dann werde ich umwandeln in decimal Werte (RGB), aber ich bekam schon, dass mit dem hinzufügen von ein Platz für '\0' in mein array 🙂
InformationsquelleAutor Markus | 2012-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut,
color1
undcolor2
sind zwei bytes lang sind - Sie haben keinen Platz für das \0-terminator. Wenn man sich bei einem von Ihnen als string, Sie Holen Sie mehr Zeichen, die Sie wünschen. Wenn Sie betrachten Sie als zwei Zeichen, wirst du das richtige Ergebnis.Sollten Sie definieren Sie als 3 Zeichen lang und legen die \0 am Ende.
InformationsquelleAutor zmbq
Zuerst müssen Sie hinzufügen, +1 Größe, die für die
\0
.dann:
Unter der Annahme, dass
Ausgabe:
Ich hoffe, dies hilft Ihnen.
UPDATE
Schreiben Sie eine
substr()
- Funktion, um Teil der Zeichenkette(von x bis y) und kopieren Sie dann Ihren string.Dann:
Die Ausgabe:
Und nicht vergessen:
bbCC
incolor2
er wahrscheinlich nur wolltebb
(als er impliziert in seinem ersten Satz).check out my update.
eigentlich Anthales ist richtig, aber die Lösung von Jack genug Informationen enthält, würde ich in der Lage gewesen, um es zu optimieren, für meine Bedürfnisse sowieso. Leider kann ich nur annehmen, um eine person und zmbq war der erste eigentliche richtige Antwort. Wenn ich mal zufällig 15 Ruf ich abstimmen würden, bis Ihre Frage. Danke für Eure Hilfe.
InformationsquelleAutor Jack