scanf(%c%*c)
-
Hallo und zwar habe ich hier in meinem Buch eine Zeile die ich nicht verstehe:
char response; scanf("%c%*c",&response);
Was bewirkt das %*c?
-
Hallöchen,
aus c kurz & gut, O'Reilly Verlag
Enthält ein Formateleement hinter dem Prozentzeichen (%) einen Stern (*), wird die Eingabe gemäß dem vorgegebenen Typ interpretiert, jedoch nicht gespeichert. Das entsprechende Eingabefeld wird also überlesen. Für dieses Gormatelement ist kein Argument anzugeben.
Ein kleines Beispiel zur Erklärung:
du möchtest ein Datum in der Form (inkl. der Punkte) dd.mm.yyyy in drei int variablen (day, month, year) einlesen.
Einen Punk kannst du aber nicht in eine int variable speichern.also schreibst du in deinem programm:
scanf("%d%*c%d%*c%d", &day, &month, &year);
Der Benutzer gibt auf der Kommandozeile z.B. das heutige Datum ein:
[]19.12.2008[]in deinen Variablen steht dann:
day = 19
month = 12
year = 2008
die Punkte dazwischen werden vom compiler mit deiner angabe im scnaf (also mit %*c) verglichen und dannach verwofen.aber achtung!!!
der Benutzer könnte jetzt auch soetwas eingeben:
[]19x12?2008[]
x und ? sind ja auch char zeichen, und werden somit vom compiler als richtig empfunden.wenn du auf der sicheren seite sein möchtest kanns du auch einfach deinen scanf umbauen z.B.:
scanf("%d.%d.%d", &day, &month, &year);
damit verlangt der compiler eine zahl einen punkt gefolgt von einer zahl einem punkt und wieder einer zahl.
Hoffe ich konnte dir helfen,
gruß Honey