Einfügen von char-string in einen anderen char string
Ok, also ich habe einen char stringA und char stringB, und ich möchte einfügen zu können stringB in stringA an der Stelle x.
char *stringA = "abcdef";
char *stringB = "123";
Produkt "ab123cdef"
weiß jemand, wie dies zu tun? Vielen Dank im Voraus
Ist dieses Hausaufgaben?
Auch Sie hat dieses C++. Wenn es C++ und es ist keine Hausaufgabe, warum man nicht einfach std::string?
Ich weiß, wie zu tun Sie es mit einem std::string, und ya es ist Hausaufgaben
Wenn diese Hausaufgaben (oder auch wenn nicht), würde ich vorschlagen, dass Sie Bearbeiten Sie Ihre post zu beinhalten, was Sie bereits versucht haben, und wo hast du steckengeblieben. Wie ist es, Sie einfach zu Fragen, jemand anderes zu tun, Ihre Hausaufgaben für Sie.
wenn wir Menschen diese Dinge tun, für sich selbst, Sie werden gute Programmierer. Wir brauchen nicht mehr Wettbewerb.
Auch Sie hat dieses C++. Wenn es C++ und es ist keine Hausaufgabe, warum man nicht einfach std::string?
Ich weiß, wie zu tun Sie es mit einem std::string, und ya es ist Hausaufgaben
Wenn diese Hausaufgaben (oder auch wenn nicht), würde ich vorschlagen, dass Sie Bearbeiten Sie Ihre post zu beinhalten, was Sie bereits versucht haben, und wo hast du steckengeblieben. Wie ist es, Sie einfach zu Fragen, jemand anderes zu tun, Ihre Hausaufgaben für Sie.
wenn wir Menschen diese Dinge tun, für sich selbst, Sie werden gute Programmierer. Wir brauchen nicht mehr Wettbewerb.
InformationsquelleAutor Sj. | 2010-01-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erklärung:
Hoffe, das hilft.
Bemerkung: denken Sie daran strC lange genug, um enthalten sowohl die strA und strC, sonst werden Sie produzieren ein "segmentation fault". Sie können dies tun, indem er die Zeichenfolge als ein array, wie in meinem Beispiel.
vergessen Sie nicht den null-char!
es sollte char * strC = malloc(strlen(strA)+strlen(strB)+1). Vergessen Sie die zusätzlichen Zeichen '\0'. Es könnte scheinen, zu arbeiten, aber Sie haben eine chance, das überschreiben ein byte von etwas, das nicht Ihrem string. Ich bin mir nicht sicher, gdb fangen, aber Elektro-Zaun beschweren.
ach ja richtig, hah hab es jetzt, danke!
Ich würde denken, dass dies die beste Lösung, da es nicht malloc-Speicher. Wenn Sie malloc Speicher, dann müssen Sie frei oder Sie haben ein memory leak. Und wenn du den Speicher frei malloc würde dann entweder verwenden, müssen Sie es in den unmittelbaren Bereich, in dem es erstellt wurde, oder senden Sie den Mauszeiger woanders an, wo es muss verfolgt werden, so kann es später freigegeben werden. Wenn Sie erstellen eine übergroße array, dann das OS wird sich mit der Speicherfreigabe.
InformationsquelleAutor mingos
stringA und stringB sind beide Zeiger, - Sie enthalten die Startadresse für eine blob-Speicher. Die Erinnerung, die Sie verweisen enthalten kontinuierlichen strings von Zeichen: "abcdef" und "123" ersetzt. Da die Saiten sind zusammenhängende Blöcke von Speicher (was bedeutet, dass der Speicherplatz eines Zeichens wird ein byte nach dem vorherigen), können Sie nicht fügen Sie mehr Zeichen in der Mitte einer Zeichenfolge ohne erste bewegte einige Zeichen. In deinem Fall kann man noch nicht wirklich, dies zu tun, da die Menge des Speichers, der für jedes Strings ist gerade groß genug, um zu halten EINFACH, dass string (ignorieren Polsterung).
Was Sie gehen zu müssen, zu tun ist, kopieren Sie die Zeichenfolgen in einem anderen block des Speichers, eine, die Sie haben, reserviert für diesen Zweck, und kopieren Sie Sie, so dass die zweite Zeichenfolge beginnt x-Zeichen in der ersten Zeichenfolge.
Mehrere andere, SO dass Benutzer gepostet code-Lösungen, aber ich denke, Sie sollten versuchen, und finden Sie genau die Lösung, die auf Ihre eigene (und hoffentlich meine high-level-Erklärung, was Los ist hilft).
InformationsquelleAutor Niki Yoshiuchi
strlcpy (product, ..., sizeof(product)
. Wenn Sie feststellen, dass umständlich, machen Sie sich ein Makro für:#define STRCPY(a,b) strlcpy (a, b, sizeof(a))
. Gleiche für strcat usw.!InformationsquelleAutor Idan K
Hier eine Allgemeine Lösung.
Hinweis, dass
destination
muss genug Platz im Speicher hinzufügen Saatgut (z.B. ein heap-allokierten array der Größe reibe alsstrlen(seed)+strlen(destination)
). So, in Bezug auf die Frage, die Sie haben, um ein größeres array.InformationsquelleAutor matteolel
InformationsquelleAutor TelePario