Node:Other Input Conversions, Next:, Previous:Dynamic String Input, Up:Formatted Input



Other Input Conversions

This section describes the miscellaneous input conversions.

The %p conversion is used to read a pointer value. It recognizes the same syntax used by the %p output conversion for printf (see Other Output Conversions); that is, a hexadecimal number just as the %x conversion accepts. The corresponding argument should be of type void **; that is, the address of a place to store a pointer.

The resulting pointer value is not guaranteed to be valid if it was not originally written during the same program execution that reads it in.

The %n conversion produces the number of characters read so far by this call. The corresponding argument should be of type int *. This conversion works in the same way as the %n conversion for printf; see Other Output Conversions, for an example.

The %n conversion is the only mechanism for determining the success of literal matches or conversions with suppressed assignments. If the %n follows the locus of a matching failure, then no value is stored for it since scanf returns before processing the %n. If you store -1 in that argument slot before calling scanf, the presence of -1 after scanf indicates an error occurred before the %n was reached.

Finally, the %% conversion matches a literal % character in the input stream, without using an argument. This conversion does not permit any flags, field width, or type modifier to be specified.