如何在linux内核中使用scanf?

aji*_*red 2 linux kernel scanf

我是内核编程的新手.当我尝试在我的角色设备文件代码中使用scanf时,我收到此错误消息:错误:隐式声明函数'scanf'

我怎么解决这个问题 ?请帮帮我.

我在虚拟盒子里使用linux CentOS.

sar*_*old 6

因为内核没有"标准输入"或"打开文件",所以没有可用的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, ...)
Run Code Online (Sandbox Code Playgroud)

你选择哪一个取决于你想要怎么称呼它.该源代码sscanf()显示了如何使用该vssanf()函数,以防您更喜欢使用varargs调用约定.