PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Modulo Division und warum %% und nicht % im printf Befehl?



Mr.Nobody
08-01-2003, 22:27
Hallo,

Ich bin Anfänger was C anbetrifft. Ich habe folgendes Übungsprogramm:

/*
Beispiel einer Modulofunktion
*/
#include <stdio.h>
void main(void)
{

int zahl_a = 5;
int zahl_b = 2;
int div_rest;
div_rest = zahl_a % zahl_b;
printf ("\n%d %% %d = %d\n",zahl_a, zahl_b,div_rest);

}


Kann mir bitte jemand sagen warum in der letzten Zeile des Befehls printf %% also 2mal hintereinander % enthalten muß, und zwar an der Stelle printf ("\n%d %% %d = %d\n",..........

Habe ich es so richtig verstanden, daß %d für den Inhalt von Variablen steht und % als Modulo-Divisionszeichen? Aber was bedeutet %%?


Wenn ich es so schreibe: printf ("\n%d % %d = %d\n",.......... dann erhalte ich bei Ausführung
meines Programms nach dem Kompilieren immer die Ausgabe 5 %d =2

Wenn ich es so mache, wie im Übungsprogramm dann erhalte ich 5 : 2 =1
(1 ist der Rest)

Ich kann im Lehrmaterial leider keinen Hinweis finden, warum im printf Befehl %% steht und in anderen Programmen mit Modulo Division %.

Viele Grüße
N.

jwebworks
08-01-2003, 22:53
%% gibt das %-zeichen aus.

ausgerechnet wird die sache ja eine
zeile weiter oben. sprintf gibt eine
zeichenkette formatiert aus.

cu, stop.h

anda_skoa
08-01-2003, 23:57
Genau.

Bei printf oder ähnlichen Befehlen, kann man mit Hilfe eines Formatstrings die Ausgabe/Eingabe festlegen.
Damit die Funktion erkennen kann, was normaler Text ist und was eine Formatangabe, beginnt eine Formatangabe mit einem % Zeichen.

Das % ist hier das Escape-Zeichen.
Um das % selbst zu erhalten, muß man darum %% schreiben.

Ähnliches gilt ja bei \
In einem C Code dient \ um spezielle Zeichen zu beschreiben.
\n ist zB eine newline, \r ein Carriage Return, \t ein Tabulator.
Um nun den \ zu erhalten muß man \\ schreiben.

das %d bedeutet, das an dieser Stelle eine Ganzzahl (Integer) eingesetzt werden soll.

Die Formatmöglichkeiten von printf und Co sind sehr mächtig.
zB: %00d formatiert eine Ganzzahl immer mit mindestens 3 Stellen, wobei bei kürzeren Zahlen vorne mit 0 aufgefüllt wird.

Ciao,
_

avuton
09-01-2003, 07:06
%% gibt ein% aus, nur% wird als Operator gesehen und gibt nicht % aus.
avuton

Mr.Nobody
09-01-2003, 17:52
Hallo!

Danke an Alle für Eure Antworten.

Gruß

N.

SeeksTheMoon
09-01-2003, 18:48
und warum gibt \% nicht % aus?

schreibe ich


#include <stdio.h>

main()
{
printf("Gebe aus: \%");
}


hab ich folgende Ausgabe: Gebe aus:

Erst wenn man folgendes schreibt:


#include <stdio.h>

main()
{
printf("\"Gebe aus: \%\"");
}


hat man die Ausgabe: "Gebe aus: %"
Dann kann man sogar statt \% auch nur % schreiben und es wird angezeigt. Das finde ich....strange