Поскольку ядро не имеет «стандартного ввода» или «открытых файлов», нет смысла иметь доступную функцию scanf()
. (Хорошо, учет процессов BSD - это место, где в ядре открыт файл. Но ядро записывает этот файл.)
Требуемая замена называется либо sscanf()
, либо vsscanf()
, обе определены в lib/vsprintf.c
:
/**
* vsscanf - Unformat a buffer into a list of arguments
* @buf: input buffer
* @fmt: format of buffer
* @args: arguments
*/
int vsscanf(const char *buf, const char *fmt, va_list args)
/**
* sscanf - Unformat a buffer into a list of arguments
* @buf: input buffer
* @fmt: formatting of buffer
* @...: resulting arguments
*/
int sscanf(const char *buf, const char *fmt, ...)
То, что вы выберете, зависит от того, как вы бы предпочли это назвать. Источник для sscanf()
показывает, как использовать функцию vssanf()
, если вы предпочитаете использовать соглашение о вызовах varargs.