The scanf placeholder consists of % at the beginning and a type indicator at the end. Apart from that it can have *, a maximum field-width indicator, and a type indicator modifier, for example,
o Used for unsigned int expected's value. It should be an integer in octal form.
U Unsigned integer in decimal form.
X, Unsigned integer in hexadecimal form.
E, f, g, G Floating-point values.
S Character string. It matches a sequence of non-whitespace characters terminated by an end-of-line or end-of-file character. The additional argument should be a pointer to char and should point to an area that is large enough to hold the input string as well as the NULL terminator.
C Matches the number of characters according to a specified field-width. If no width is specified then a single character is assumed. The additional argument must be a pointer to char; the area pointed to should be large enough to hold the specified number of characters.
N Does not read any input but writes the number of characters so far in the target variable.
The * is used to suppress input. For example, with %*d, if your input consists of 5 values and you want to ignore the middle 3 values, you can write:
scanf(" %d %*d %*d%*d %d ", &i, &j)
So, if your input is
10 20 30 40 50
it will get the value 10 and j will get the value 50. This is useful when you are getting the input from a file.
It indicates the maximum number of characters that are read into the variables.
scanf requires two inputs: the first is a string argument and the second is a set of additional arguments.
You can define how the input is to be taken by using placeholders.