Точно так же, как printf(...) для форматированного вывода, вы можете использовать scanf(...) для форматированного ввода. * int fscanf(FILE *stream, const char *format, ...)
fscanf(...) читает из stream и преобразует ввод по правилам, определяемым в format. Результаты помещаются в аргументы, заданные в "..." (эти аргументы должны быть указателями!). Чтение заканчивается, когда в format исчерпаны правила форматирования.
Таблица 8.1: Libc - трансформации printf
Символ | Форматируется в --------|----------------------------------- d,i | int signed, десятиричный o | int unsigned, восьмеричный, без предваряющего 0 x,X | int unsigned, шестнадцатиричный, без предваряющего 0x u | int unsigned, десятиричный c | int (unsigned) одиночный символ s | char * до \0 f | double как [-]mmm.ddd e,E | double как [-]m.dddddde+xx, [-]m.dddddde-xx g,G | double использует %e или %f когда нужно p | void * n | int * % | %
fscanf вернет EOF, при первом достижении конца файла или при возникшей ошибке. Если этого не случится, будет возвращено количество трансформированных аргументов.
format может содержать правила форматирования аргументов (см. табл. 8.2)
Он может также включать:
* int scanf(const char *format, ...)
То же, что fscanf(stdin,...)
* int sscanf(char *str, const char *format, ...)
То же, что scanf, но ввод производится из строки str.