Hallo zusammen, kurze Frage: Gibt es in C auch eine Funktion mit der man aus einem String einen Teilstring kopieren kann, mit der man den Bereich festlegen kann. Ich meine nicht ... // kopiere in textB 3 Zeichen von textA strncpy(textB, textA, 3); Ich muss einen Teilstring so in der Mitte eines Strings rauskopieren. VG
in c geht das nicht. du kannst nur die länge vom anfang, ohne offset bestimmen/kopieren. strncpy( string1, "Hallo", 2)--> "Ha"
pepe schrieb: > in c geht das nicht. Strings gibts in C eigentlich sowieso nicht. Allenfalls Pointer. Einfach das Offset auf den Pointer draufrechnen... strncpy( string1, "Hallo"+3, 2)--> "lo"
vielen Dank für die Antwort. wenn ich jetzt aber einen Buffer befüllen will, müsste das ja so realisierbar sein. Allerdings klappt es nach diesem Schema nicht so ganz... strncpy( stringbuffer, string1, strlen(string1) ); stringbuffer( strlen(string1) ) = ' '; strncpy( stringbuffer + strlen(string1), string2, strlen(string2) ) stringbuffer( strlen(string2) ) = ' '; . . . .
Lutz schrieb: > vielen Dank für die Antwort. > > wenn ich jetzt aber einen Buffer befüllen will, müsste das ja so > realisierbar sein. Allerdings klappt es nach diesem Schema nicht so > ganz... > > strncpy( stringbuffer, string1, strlen(string1) ); > > stringbuffer( strlen(string1) ) = ' '; Was genau willst du hier eigentlich realisieren? WEnn du einen String hinten an einen anderen String drannhängen willst, dann nimmst du nicht strcpy sondern strcat. Und natürlich gibt es da auch eine n Version - strncat - dazu. Und bei den n Versionen der strxxx Funktionen immer darauf aufpassen, dass diese das abschliessende obligatorische \0 Byte nur unter ganz bestimmten Umständen im Ziel hinterlassen. Daher schreibt man sich ganz gerne auch eigene Funktionen, die auf strnxxx aufbauend, das abschliessende \0 Byte auf jeden Fall ins Ziel schreiben. Das was du da geschrieben hast, kannst du auch einfacher formulieren
1 | strcpy( stringbuffer, string1 ); |
2 | strcat( stringbuffer, " " ); |
3 | strcat( stringbuffer, string2 ); |
4 | strcat( stringbuffer, " " ); |
Und da dieses mehr oder weniger genau so in so ziemlich jedem C-Buch als Einführung in die Strinverarbeitung vorkommt, bleibt für mich nur der Schluss, dass du auch zu der fehlgeleiteten Fraktion der Halbwissen-C-Programmierer gehörst, die meinen sie bräuchten kein C-Buch.
stringbuffer( strlen(string1) ) funktioniert anders als du denkst. () ist für Funktionen [] ist für Arrays Zudem brauchen die Strings in C eine '\0' am Ende. strncpy() macht das aber nur, wenn der komplette String kopiert wurde.
Und das hier:
1 | stringbuffer( strlen(string2) ) = ' '; |
macht auch nicht was Du denkst (und nicht nur wegen der falschen Klammmern)
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.