Funktion für string kopieren von Position a bis b

Gast #2132534
Lesenswert?

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
Gast #2133043
Lesenswert?

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) ) = ' ';
.
.
.
.
#2133052
Lesenswert?

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.
Gast #2133080
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren