scanf & printf



  • Guten Morgen!

    Also ich weiß inzwischen wie scanf arbeitet , doch ich finde keine logische Erklärung dafür.
    printf:
    printf("%c", cvar); --> Total logisch : Fügt den Wert von cvar an die Stelle von "%" ein , formatiert es zum char und gibt es als char aus
    scanf("%c", &cvar); --> Hier hat "%c" zwei Bedeutungen : Lieber scanf hole ein Byte aus dem T.puffer , füge sie an die Stelle von "%" ein , formatiere sie zum char und lege es in "&cvar" ab... Ich brauch eine logische Erklärung



  • Die Formatkennungen bei printf() bedeuten: nimm den nächsten Wert aus der Argumentliste, formatiere ihn passend* und gib ihn aus.
    Die Formatkennungen bei scanf() bedeuten: lies die nächsten Zeichen aus der Eingabe, interpretiere sie passend* und schreib sie in den nächsten Wert aus der Argumentliste.

    (bei printf() kannst du Werte übergeben, bei scanf() übergibst du die Adresse der Zielvariablen - weil C keine Referenzen kennt, wird "call-by-ref" Semantik mittels Zeigern dargestellt)

    * was dabei "passend" bedeutet, wird durch die Angaben hinter dem % festgelegt - %c ist ein einzelnes Ascii-Zeichen, %i wäre eine Zahl.


Log in to reply