我是内核编程新手。当我尝试在我的字符设备文件代码中使用scanf时,出现此错误消息 :错误:函数'scanf'的隐式声明如何在linux内核中使用scanf?
如何解决此问题?请帮助我。
我在虚拟框中使用Linux CentOS。
我是内核编程新手。当我尝试在我的字符设备文件代码中使用scanf时,出现此错误消息 :错误:函数'scanf'的隐式声明如何在linux内核中使用scanf?
如何解决此问题?请帮助我。
我在虚拟框中使用Linux CentOS。
你不能在内核中使用libc函数。纯C只。我相信有人可以提供相同的内核。
因为内核没有“标准输入”或“打开文件”,所以没有任何可用的功能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()
函数,以防万一您宁愿使用可变参数调用约定。
即使你不是在内核模式下编程,你也不应该使用任何'* scanf'函数*。 – zwol