Format (printf, format, ...)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Moinsen,


    wie ich gesehen habe, gibt es eigentlich kein spezielles Tutorial für den Formatspezifier in Funktionen wie printf, format und co.
    Aus diesem Grund und weil ich kürzlich ein Clocktutorial gesehen habe mit unnötigen Anweisungen, habe ich beschlossen eins zu
    schreiben, damit Newbs ein bessereren Einstieg bekommen.


    Der Text wird zum Teil selbst geschrieben und zum Teil von der Quelle, unterm Text angegebenen, übersetzt.
    Quelle: www.cplusplus.com


    Kommen wir zum typischen Aussehen ohne jegliche Argumente oder Werte:
    %[flags][width][.precision][length]specifier


    %
    Dieses Zeichen gibt dem "Parser" Bescheid, dass hier ein Wert aus den Parametern eingesetzt werden soll.
    Mit dem Parameter sind nur die Variablen und Werte hinter dem Formatspezifier gemeint.
    format(ziel, sizeof(ziel), "formatspezifier", parameter1, parameter2);


    [flags]
    Diese Zeichen beeinflussen die Ausgabe mit Leerzeichen, einer Reihe von Nullen und Sonstigen, dass man aus daraus entnehmen kann:
    [table=2][*]flags[*]Bedeutung
    [*]- [*]Der Text wird linksbündig (Zahl: 15, Width: 4, Ausgabe: '15 ', Ohne '-': ' 15') (Nicht unterstützt)
    [*]+ [*]Das Vorzeichen wird auch ausgegeben (Nicht unterstützt)
    [*]\0 [*]Freie Felder (wenn die Gesamtlänge kleiner als [width] ist) werden mit 0 ausgefüllt ('\' bitte nicht beachten)
    [*](Keine Angabe) [*]Siehe '0'-flag jedoch mit Leerzeichen statt mit Nullen.
    [*]# [*]Spezielles Ausgabeformat (%#o -> Oktal, %#x -> Hex mit 0x, %#X -> Hex mit 0X, %#e(, E, f) -> Dezimalzeichen anzeigen) (Nicht unterstützt)
    [/table]


    [width]
    Angabe, wie viel Felder die Ausgabe haben sollte, wenn die Länge darunter liegt, dann wird werden die unbelegten Felder mit einem
    Leerzeichen ausgefüllt, sofern kein [flags] dies nicht geändert hat ('%02d' -> Beispiel mit der Zahl 5 wird zu '05', ohne die '0' -> 5)


    [.precision]
    Die Anzahl der Stellen nach dem Komma, bei Gleitkommazahlen (Float).
    Beispiel: '%.5f' mit der Zahl 3.4145926 wird zu 3.14159 (Kann je nach Präzision, irgendwann nicht mehr stimmen, da der Datentyp Float
    nicht unbegrenzt Zeichen nach dem Komma speichern kann)


    [length]
    Wird in Pawn nicht unterstüzt, muss weggelassen werden.


    specifier
    Der Datentyp, siehe Tabelle:
    [table=2][*]Spezifier [*]Datentyp
    [*]%b [*]Zahl in binärer Form (10 = 2, 11 = 3, 100 = 4, 101 = 5)
    [*]%c [*]Ein Zeichen ('A', 'a', 'B', 'b') -> ASCII Tabelle
    [*]%d oder %i [*]Ganzzahl (5, 10, 23, 40)
    [*]%f [*]Gleitkommazahl (3.0, 5.16, 3.14159)
    [*]%s [*]Zeichenkette ("Hallo", "Welt", "Ein Apfelbaum")
    [*]%x [*]Hexadezimale Zahl (0x15, 0xFA16, 0xFF = 255)
    [/table]


    Beispiele:










    Nun, das Tutorial wäre nun zu Ende. Vielleicht hat es dir geholfen oder nicht.
    Trotzdem ist es eine gute Nachschlageseite hier im Forum für dich und Andere.


    Freundliche Grüße
    - Necktrox

    5 Mal editiert, zuletzt von d30af26d () aus folgendem Grund: Pawnproblem #2 Beispiele

  • Sei mir nicht böse das sieht alles gut und schön aus aber Newbies werden das wohl kaum verstehen... Ich selber bin kein Anfänger was das Scripting angeht aber das ist zu schwer(Ich verstehe da nicht wirklich was) Und irgendwie wenig erklärt also ich sehe jetzt nur format aber printf etc. sehe ich nichts :/ Und auch wenn es selbst geschrieben ist das sieht danach auch als wenn du auf irgendeine Seite warst und das 1:1 Übernommen hättest...

  • Mag sein, dass es ein höheres Level erfordert, hier alles zu verstehen, aber der Text wurde ganz von mir verfasst.
    // edit: Ich werde noch Beispiele mit Bilder anhängen.

  • Zitat

    Mag sein, dass es ein höheres Level erfordert, hier alles zu verstehen, aber der Text wurde ganz von mir verfasst.

    Ähh falsche Antwort! Du sagtest das das was für Newbies ist xD Aber na gut das mit dem Text glaube ich dir mal...

  • Zitat

    Naja, ein Newb sollte schon mehr als MrMonats Tutorials kopieren und einfach einfügen.

    Ist mir auch klar aber da ich kein Newb mehr bin und das nicht verstehe was das mit

    Zitat

    %[flags][width][.precision][length]specifier

    etc. sein soll dann wird ein Newb das warscheinlich auch nicht raffen weil es laut thema um formatierungen print Befehle etc. geht.


    Mein bsp. für format wäre




    new SpielerName[MAX_PLAYER_NAME],Beispiel[128];
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    format(Beispiel,sizeof(Beispiel),"Das ist ein Beispiel von %s.",SpielerName);
    SendClientMessge(playerid,Rot,Beispiel);//Da würden dann das stehen: Das ist ein Beispiel von Delko65(Hier wäre das jetzt mein Name :p weil ich das geschrieben habe^^)

    Hier sieht man für was formatierungen gut sein können denn dein bsp. wo nur

    Zitat

    formatspezifier

    drinne steht kann ich auch in eine SendClientMessge(); packen... ein %s ; %d; %f etc. bsp wäre besser...

  • Zitat


    Kommen wir zum typischen Aussehen ohne jegliche Argumente oder Werte:
    %[flags][width][.precision][length]specifier


    Die Erklärung steht darüber. Ist es denn mein Problem, wenn du und Andere nicht mehr fähig seid und nur 50% und weniger davon ließt?

  • Zitat

    Die Erklärung steht darüber. Ist es denn mein Problem, wenn du und
    Andere nicht mehr fähig seid und nur 50% und weniger davon ließt?

    Nunja ich habe es mir durchgelesen aber verstehe das ding halt nicht leicher wäre es halt wenn du ein ähnliches bsp. wie ich nimmst... deins ist dann doch umständlicher und für fortgeschrittene bishin zu profi scripter geeignet... Ist wie gesagt nur ein kleiner tipp auch ein bsp. mit printf etc. wäre gut

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich bin weder in C, C++, noch Pawn ein Profi, nicht mal wirklich besonders gut, doch als ich das gelernt habe gehörte Formatierungen wirklich zum Basiswissen, und das war auf Englisch und noch viel Komplizierter erklärt als hier.
    Aber leider muss man eben sagen (schau dir die Themen an), dass es hier zumeist nur Copy&Paste-Profis gibt, die auch nicht allzu viel Ahnung vom Grundwissen haben.


    Ich finds sehr übersichtlich und auch gut mit Beispielen erklärt, einfacher und trotzdem besser erklärt gehts garnicht, top!

  • Fluttershy: Wo ist dein Avatar ? :(


    Btt., Vielleicht sollte man mal ein „richtiges Einsteiger-Tut“ machen, wie ich es gerade ( dank @Lars_Vegas :D ) für PHP neu mache :)


    ... dann könnte man damit ja tabellarische Dialogs etc. machen, oder ? :)

  • Tion Der lebensgroße T-Rex hat ihn gefressen :/
    Und Einsteigertuts sind ja gut, aber allein um sich das Basiswissen anzueignen bräuchte man sehr viel Zeit...


    (Das geht doch viel schneller sich n GF runterzuladen, kompilieren, und wenn errors kommen einfach ein thread aufmachen, am besten ohne zeilen und errors) ah diese verdammte Sarkasmus-Lock Taste :whistling:
    Ne im ernst, das will sich hier keiner antun, die meisten denken eh pawn besteht aus CreateVehicle und SendClientMessage :S

  • Die meisten denken, dass es Pawno und nicht Pawn heißt und es als Programmiersprache bezeichnen. Bei besonderen Fällen denken Einige, dass sie wahre Programmierer sind.


    99,9999% "scripten" ja auch Pawn, obwohl Pawn keine Script- sondern eine Programmiersprache ist. Folglich gibt es auch keine Pawn-Scripter sondern nur Programmierer. Trotzdem interessiert das keinen, man kann sich auch an dämlichen Kleinigkeiten aufhalten.
    Wer das Tutorial nicht versteht, der sollte vielleicht lieber gleich aufgeben, oder sich noch woanders fortbilden. Das Tutorial ist so verständlich gemacht, wie es nur geht, ohne irgendetwas wichtiges auszulassen. Würde man es noch einfacher machen, wäre es wieder unvollständig.

  • 99,9999% "scripten" ja auch Pawn, obwohl Pawn keine Script- sondern eine Programmiersprache ist. Folglich gibt es auch keine Pawn-Scripter sondern nur Programmierer.


    Ich frag mich wirklich woher du das weißt, denn PAWN ist eine Scriptsprache, wie es im Buche steht.


    Wenn PAWN eine Programiersprache wäre, kannst du mit sicherlich ein Beispiel nennen.
    Der MP3 Player, den es gibt kann man mit Scripten füttern, aber man kann ich nicht wirklich programierien.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski