Friday, March 20, 2009

Placeholders for Scanf


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,

  • d, i Used for signed integers; the expected argument should be a pointer to int.

  • 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.


  1. scanf requires two inputs: the first is a string argument and the second is a set of additional arguments.

  2. You can define how the input is to be taken by using placeholders.

No comments:

Post a Comment