String "zusammenbauen"
-
Wie kann man in c/c++ eine String zusammenstellen?
Der String soll zum Beisoiel ABCDEFGHI heißen.ABC und GHI sind vorbegeben.
CDE wird als Parameter argv[0] übergeben.und am schluss soll der String ABCDEFGHI sein...
Danke schon mal.
-
Erstmal genug Platz für den gesamten String (inklusive abschließendem \0 bereitstellen - und dann mit strcpy() und strcat() die Teile zusammenkleben.
-
Danke, so hab ich es auch machen wollen.
Und wie kan nan Leerzeicen am sichersten einbauen.
Da gibt's ja sicher eine Escape- Sequenz
-
Hä?
Die Escapesequenz für ein Leerzeichen ist im Allgemeinen " " :p
-
Wozu eine Escape-Sequenz? Ein Leerzeichen kann ganz normal in einem String angegeben werden.
-
Ja stimmt, wieso denn so umständlich:
Wenn ich also:strcpy(str, "pngtopnm"); strcpy(str, argv[0]); strcpy(str, "| ppmtojpeg > /home/Bilder/tmpImage.jpg"); puts(str);
schreibe, und das Programm so aufrufe: test.out /home/Testbild.png
dann müsste der String so aussehen:pngtopnm /home/Testbild.png | ppmtojpeg > /home/Bilder/tmpImage.jpg
oder?
-
strcat() setzt keine Leerzeichen zwischen die Teilstrings, das mußt du schon selber machen (und am Ende des "pngtopnm " bzw. am Anfang des " | pptojpeg..." ein Leerzeichen ergänzen).
PS: Eine Alternative hätte ich noch zu bieten: sprintf().
-
Ok, dann müsste es so stimmen:
strcpy(str, "pngtopnm "); strcpy(str, argv[0]); strcpy(str, " | ppmtojpeg > /home/Bilder/tmpImage.jpg"); puts(str);
-
Stimmt leider immer noch nicht:
Wenn ich mir den String anschaue (printf("%s", str)),
dann steht folgenden drin:| ppmtojpeg > /home/Bilder/tmpImage.jpg
Irgendwie fehlt der erste Teil.
Kann daran lieegen, wie ich auf den Paramter zugreife??
-
Nimm in der zweiten und dritten Zeile strcat, denn strcpy bedeutet drüberkopieren. So hast Du am Ende nur den letzten String in "str".
-
Ja klar!
Und statt argv[0] argv[1] wenn ich das richtig sehe.
Danke!