Skip to content

I/O Format Specifiers for Reading Characters

A character argument has a format specifier of the following form:

%[*] [width] c

ModifierInterpretation
Default FunctionalityA character is read from the device and stored in the argument.
* (asterisk)An asterisk acts as the assignment suppression character. The input is scanned but not assigned to any parameters and is discarded.
widthSpecifies the number of characters to read and store in the argument. The default is 1. A NULL terminator is not appended to the argument. A # may be present in lieu of an integer width modifier, in which case an extra int argument supplies the value.
HRESULT hr = S_OK;
char ch;
// Read a single character from the device and store in the argument
hr = io.Scanf(_T("%c"), ch);
// Field width specifies 5 characters should be read
char sz[5];
hr = io.Scanf(_T("%5c"), sz); // sz is NOT NULL terminated
// Field width specified using a variable
int nWidth = 5;
hr = io.Scanf(_T("%#c"), nWidth, sz); // sz is NOT NULL terminated
// Reads 5 characters from the device and discards
hr = io.Scanf(_T("%*5c"));