Was bedeuten %s und %d in printf in der C-Sprache? [closed]
Lesezeit: 4 Minuten
Simon Kiely
Ich verstehe nicht, was die %s und d% tun in diesem C-Code:
for (i=0;i<sizeof(code)/sizeof(char*); i++) {
printf("%s%d%s%d\n", "Length of String ", i, " is ", strlen(code[i]));
str = code[i];
printf("%s%d%s%c\n","The first character in string ", i, " is ", str[0]);
}
Ich bin neu in der C-Sprache und mein Hintergrund ist Java.
Was machen die %s%d%s%d Symbole bezeichnen?
Warum gibt es so viele von ihnen?
Wird hier anstelle von a das Komma zur Verkettung verwendet +?
Die Zeichenfolgenliterale, an die übergeben wird printf sind sinnlos – sollten sein printf("Length of string %d is %d\n", i, strlen(code[i]));
– Seth Carnegie
26. Januar 2012 um 23:27 Uhr
Die Zeichenfolgenliterale geben also einfach an, wo in der Zeichenfolge die Ausgabe dieser Variablen platziert wird? Das scheint eine seltsame Art zu sein, Dinge zu tun?
– Simon Kiely
26. Januar 2012 um 23:32 Uhr
“Die Argumente darin unterscheiden sich stark von Java.” Java hat auch System.out.printf…
– AusCBloke
26. Januar 2012 um 23:37 Uhr
Das ist sooo hilfreich, danke AusCBloke!!!!!
– Simon Kiely
27. Januar 2012 um 1:07 Uhr
Die Funktionsfamilie printf() verwendet % Zeichen als Platzhalter. Wenn ein % gefunden wird, liest printf die Zeichen nach dem % um festzustellen, was zu tun ist:
%s - Take the next argument and print it as a string
%d - Take the next argument and print it as an int
Das \n am Ende der Zeichenfolge steht für ein Zeilenumbruch-/Wagenrücklaufzeichen.
Kein Problem! Nur ein Hinweis: Es ist nicht immer ein % gefolgt von einem einzelnen Zeichen. Sie können ein bisschen wild werden – %.02lf – aber das lässt Sie einige nette Dinge tun 🙂
– iccir
26. Januar 2012 um 23:38 Uhr
Die %-Notation wird als Formatbezeichner bezeichnet. Beispielsweise weist %d printf() an, eine Ganzzahl auszugeben. %s, um einen String (char *) etc. auszugeben. Sie sollten es wirklich hier nachschlagen: http://google.com/search?q=printf+format+specifiers
Nein, Kommas werden nicht für die Zeichenfolgenverkettung verwendet. Kommas dienen zum Trennen von Argumenten, die an eine Funktion übergeben werden.
Das erste Argument bezeichnet Platzhalter für die folgenden Variablen / Parameter.
Zum Beispiel, %s zeigt an, dass Sie eine erwarten String Ihr erster Druckparameter sein.
Java hat auch eine printfwas sehr ähnlich ist.
"%s%d%s%d\n" ist die Formatzeichenfolge; es erzählt die printf Funktion zum Formatieren und Anzeigen der Ausgabe. Alles in der Formatzeichenfolge, das kein hat % direkt davor wird unverändert angezeigt.
%s und %d sind Konversionsbezeichner; Sie erzählen printf wie die restlichen Argumente zu interpretieren sind. %s erzählt printf dass das entsprechende Argument als String zu behandeln ist (in C-Begriffen eine 0-terminierte Folge von char); der Typ des entsprechenden Arguments muss sein char *. %d erzählt printf dass das entsprechende Argument als ganzzahliger Wert zu behandeln ist; der Typ des entsprechenden Arguments muss sein int. Da Sie einen Java-Hintergrund haben, ist es wichtig, dies zu beachten printf (wie andere variadische Funktionen) stützt sich auf Sie um ihm mitzuteilen, was die Typen der verbleibenden Argumente sind. Wenn die Formatzeichenfolge wäre "%d%s%d%s\n", printf würde versuchen zu behandeln "Length of string" als ganzzahliger Wert und i als Schnur, mit tragischen Folgen.
%s steht für Zeichenkette %d steht für Dezimalzahl (oder Int) %c steht für Zeichen
Es scheint eine Reihe von Zeichen zu durchkauen und die vorhandene Zeichenfolge ab jeder nachfolgenden Position auszudrucken. Die Strings enden jeweils bei der ersten Null.
Die Kommas trennen nur die Argumente einer Funktion, die eine variable Anzahl von Argumenten akzeptiert; diese Zahl entspricht der Anzahl der %-Argumente im Formatdeskriptor am Anfang.
Ironie
%d wird als Int ausgegeben. %s wird als String ausgegeben. %f wird als Gleitkommazahl ausgegeben
Es sollte beachtet werden, dass es falsch ist zu sagen, dass dies anders ist als Java. Printf steht für Druckformat, wenn Sie einen formatierten Druck in Java machen, ist dies genau die gleiche Verwendung. Dies kann Ihnen ermöglichen, interessante und neue Probleme sowohl in C als auch in Java zu lösen!
Das erste Argument zu printf ist eine Zeichenfolge von Identifikatoren.
%s bezieht sich auf einen String %d bezieht sich auf eine ganze Zahl %c bezieht sich auf ein Zeichen. Daher: %s%d%s%c\n druckt den String “Das erste Zeichen in sting “, %d druckt i, %s druckt ” ist ” und %c druckt str[0].
14089900cookie-checkWas bedeuten %s und %d in printf in der C-Sprache? [closed]yes
Hast du dir man 3 printf angesehen? linux.die.net/man/3/printf
– Dan Fego
26. Januar 2012 um 23:26 Uhr
Die Zeichenfolgenliterale, an die übergeben wird
printf
sind sinnlos – sollten seinprintf("Length of string %d is %d\n", i, strlen(code[i]));
– Seth Carnegie
26. Januar 2012 um 23:27 Uhr
Die Zeichenfolgenliterale geben also einfach an, wo in der Zeichenfolge die Ausgabe dieser Variablen platziert wird? Das scheint eine seltsame Art zu sein, Dinge zu tun?
– Simon Kiely
26. Januar 2012 um 23:32 Uhr
“Die Argumente darin unterscheiden sich stark von Java.” Java hat auch
System.out.printf
…– AusCBloke
26. Januar 2012 um 23:37 Uhr
Das ist sooo hilfreich, danke AusCBloke!!!!!
– Simon Kiely
27. Januar 2012 um 1:07 Uhr