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.