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%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
:
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%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: Ссылка
Tags und Links c