我对内核编程很新。当我尝试在我的字符设备文件代码中使用scanf时,我收到以下错误消息:错误:隐式声明函数'scanf'
我该如何解决这个问题?请帮帮我。
我在虚拟机中使用的是Linux CentOS。
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()
函数展示了如何使用 vsscanf()
函数,如果您更喜欢使用变长参数调用约定,则可以使用该函数。
你不能在内核中使用libc函数,只能使用纯C。我相信有人可以提供内核等效的函数。
*scanf
函数。 - zwol