Was bedeuten %s und %d in printf in der C-Sprache? [closed]

Lesezeit: 4 Minuten

Benutzeravatar von Simon Kiely
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 +?

  • 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 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

Siehe diesen Wikipedia-Artikel für ein schönes Bild: printf-Formatzeichenfolge

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.

Benutzeravatar von Irony
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].

1408990cookie-checkWas bedeuten %s und %d in printf in der C-Sprache? [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy