What is the difference between %*c%c and %c as a format specifier to scanf?

c, special-characters

Solution

In a `scanf` format string, after the `%`, the `*` character is the assignment-suppressing character.

In your example, it eats the first character but does not store it.

For example, with:

char a;
scanf("%c", &a);

If you enter: `xyz\n`, (`\n` is the new line character) then `x` will be stored in object `a`.

With:

scanf("%*c%c", &a);

If you enter: `xyz\n`, `y` will be stored in object `a`.

C says specifies the `*` for `scanf` this way:

(C99, 7.19.6.2p10) Unless assignment suppression was indicated by a *, the result of the conversion is placed in the object pointed to by the first argument following the format argument that has not already received a conversion result.

Problem

I typically acquire a character with `%c`, but I have seen code that used `%*c%c`. For example: ``` char a; scanf("%*c%c", &a); ``` What is the difference?

Original source

Related problems