Drucken Sie Teil eines Strings in C
Gibt es eine Möglichkeit, nur print-Teil von einem string?
Zum Beispiel, wenn ich
char *str = "hello there";
Gibt es eine Möglichkeit, nur print "hello"
, wenn man bedenkt, dass die substring-ich will-to-print ist die variable Länge, nicht immer 5 chars?
Ich weiß, dass ich könnte ein for
Schleife und putchar
oder könnte ich kopiere das array und fügen Sie dann eine null-terminator, aber ich Frage mich, ob es eine elegantere Möglichkeit?
was den Charakter oder die Kriterien, die Sie wollen, zu stoppen? es ist schwer, diese Frage zu beantworten ohne die Klärung
InformationsquelleAutor Mark | 2011-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Yup - das hinzufügen der
include <stdio.h>\nintmain(void)\n{
hast du... 🙂Natürlich nur, wenn er drucken möchte, stderr oder in eine Datei oder auf einem Etikett in einigen GUI, classic
printf
nicht helfen. Vielleicht machen Sie sich eine Notiz, sprintf/fprintf zu?Charabaruk: stimmt -- aber ich Neige zu der Vermutung, dass er auch merkt, dass sprintf, fprintf, etc., alle verwenden die gleiche Formatierung wie printf...
printf("%.*s", length, "hello there")
wird den trick tun, wie gut -- der erste * bedeutet nur, dass ein sub-length
string gepolstert, umlength
Zeichen, die möglicherweise oder möglicherweise nicht das gewünschte Verhalten sein.InformationsquelleAutor Jerry Coffin
Diese wird auch funktionieren:
Wird es nicht den overhead der Analyse der Formatbezeichner. Offensichtlich passen Sie den Anfang des Teilstrings, können Sie einfach fügen Sie den index auf den Zeiger.
printf
-Stil formatieren, das ist den meisten einfach daher eleganteste Antwort.InformationsquelleAutor Mehrdad Afshari
Können Sie
strncpy
zum duplizieren der Teil der Zeichenfolge, die Sie drucken möchten, aber Sie würden aufpassen müssen, fügen Sie eine null-terminator, alsstrncpy
nicht tun, wenn es nicht auf eines in der Quell-Zeichenfolge. Eine bessere Lösung, als Jerry Sarg darauf hingewiesen, ist mit der entsprechenden*printf
Funktion zu schreiben, oder kopieren Sie die Zeichenkette, auf die Sie wollen.Während
strncpy
können gefährlich werden in den Händen von jemandem, der es nicht gewöhnt ist, kann es schneller in Bezug auf die Ausführungszeit im Vergleich zu einemprintf
/sprintf
/fprintf
Stil-Lösung, da ist keiner, der overhead der sich mit der Formatierung von strings. Mein Vorschlag ist, vermeiden Siestrncpy
wenn Sie können, aber es ist gut zu wissen, nur für den Fall.InformationsquelleAutor Chris Charabaruk
printf und Freunde gut funktionieren, wenn das ist alles, Sie wollen mit der Zeichenfolge, aber für eine Allgemeine Lösung:
InformationsquelleAutor farfromhome