Verketten Sie 3 Zeichenfolgen und geben Sie einen Zeiger auf die neue Zeichenfolge C zurück

8

Ich frage mich, ob jemand mir helfen könnte, ich versuche, 3 Strings zu verketten und einen Zeiger auf die neue Zeichenfolge zurückzugeben. Ich kann nicht herausfinden, wie man das mit strcat anstelle von strcat und strncpy statt strcpy macht. Ich lerne nur c, also hilft jede Hilfe. sehr gut sein.

%Vor%     
Jimbo Jones 02.12.2015, 21:57
quelle

4 Antworten

7

Sie können es nicht so machen, Sie würden einen Zeiger auf ein lokales Array zurückgeben, das nicht mehr gültig ist, sobald die Funktion zurückkehrt, außerdem prüfen Sie nicht auf Pufferüberlauf.

Hier ist eine schnelle und schmutzige Version, die Speicher reserviert:

%Vor%

Hier ist eine ausführlichere Version mit memcpy :

%Vor%

Es sollte effizienter sein, da es die zusätzlichen Scans strcpy und strcat nicht ausführt, aber nur das Benchmarking kann beweisen, ob es eine echte Verbesserung gegenüber der obigen einfachen Version ist.

Wenn Sie 3 Strings zu einem vorhandenen Puffer verketten müssen, ist eine sehr einfache Lösung:

%Vor%     
chqrlie 02.12.2015, 22:04
quelle
5

Ihr Str ist lokal für Ihre Funktion.
Sie könnten einen vierten Parameter zu Ihrer verketteten Zeichenkette hinzufügen oder Sie könnten ihn innerhalb der Funktion malloc machen, stellen Sie sicher, dass Sie ihn nach der Verwendung freigeben.

%Vor%     
Jorgel 02.12.2015 22:05
quelle
3

Vielleicht so etwas:

%Vor%     
sergej 02.12.2015 22:11
quelle
3

Wenn Sie etwas noch allgemeineres wollen (z. B. N-Strings verketten), können Sie sich hier die Implementierung von g_strconcat der glib-Bibliothek ansehen: Ссылка

    
L. Carlier 02.12.2015 22:37
quelle

Tags und Links