The *
in a scanf()
format means 'read the data but do not assign it to a variable in the argument list'. In context, it means you could type:
18/07/2012
and get the day (18), month (7) and year (2012) interpreted correctly. The spaces in the format string are crucial and complicate things. Normally, %c
reads the next character, even a space, but the spaces around the %*c
conversion specifiers deal with white space, so the code needs a non-blank character to consume.
Hence the observed behaviour that when you typed:
23 2 1991 3 5
the 2 (on its own) was consumed by the first %*c
and the 3 (on its own) was consumed by the second.
This is Standard C and not a peculiar feature of Turbo C (which the first edition of the question specified, but the question has been edited to remove the reference to Turbo C since I first wrote this answer).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…