%*c im scanf() - was bedeutet es?
Ich habe versucht, dieses Programm in Turbo C konnte Sie aber nicht entziffern der Ausgabe. Was hat das %*c
bedeuten? Jede Hilfe würde geschätzt werden.
int dd,mm,yy;
printf("\n\tEnter day,month and year");
scanf("%d %*c %d %*c %d",&dd,&mm,&yy); //what does %*c mean ?
printf("\n\tThe date is : %d %d %d",dd,mm,yy);
AUSGABE
Enter day, month and year 23
2
1991
3
5
The date is: 23 1991 5
- Entsorgen Sie das nächste Zeichen ein.
- was, wenn er will, um Sie zu verwerfen nächsten 3 chars?
- Könnten Sie
%*3c
zum angeben der Anzahl von Zeichen übersprungen werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
*
imscanf()
- format bedeutet "Lesen Sie die Daten aber nicht zuordnen, um eine variable in der argument-Liste'. Im Kontext, es bedeutet, Sie könnten Typ:bekommen und der Tag (18), Monat (7) und das Jahr (2012) richtig interpretiert. Die Leerzeichen im format-string von entscheidender Bedeutung sind und die Dinge zu komplizieren. Normalerweise
%c
liest das nächste Zeichen, auch ein Leerzeichen, sondern die Leerzeichen um die%*c
umwandlungsspezifikationen Umgang mit Leerzeichen, so muss der code eine nicht-leere Zeichen zu konsumieren.Daher das beobachtete Verhalten, dass, wenn Sie eingegeben haben:
den 2 (auf seine eigene) konsumiert wurde, von der ersten
%*c
und 3 (auf seine eigene) verbraucht wurde, indem die zweite.Dies ist Standard-C und nicht ein besonderes Merkmal von Turbo C (welche die erste Ausgabe der Frage angegeben, aber es wurde die Frage bearbeitet zur Entfernung der Referenz zu Turbo-C, da ich zum ersten mal schrieb diese Antwort).
Den
*
nach%
in einem format-string bedeutet, dass die input-matching-format wird ignoriert (also nicht übergeben zu müssen, in einen Zeiger auf eine variable zu speichern, die abgestimmt Wert, Sie sind nicht zu verwenden).Es bedeutet zu ignorieren, dass das nächste Zeichen wie ein Leerzeichen,
/
oder eine-
, dass Häufig bei SCHRIFTLICHEN Terminen.Verwenden
*
mitscanf
unterdrückt Zuordnung. Das Ergebnis der Konvertierung folgt, verworfen wird.