2011-11-24 66 views
2

我是内核编程新手。当我尝试在我的字符设备文件代码中使用scanf时,出现此错误消息 :错误:函数'scanf'的隐式声明如何在linux内核中使用scanf?

如何解决此问题?请帮助我。

我在虚拟框中使用Linux CentOS。

+0

即使你不是在内核模式下编程,你也不应该使用任何'* scanf'函数*。 – zwol

回答

-1

你不能在内核中使用libc函数。纯C只。我相信有人可以提供相同的内核。

5

因为内核没有“标准输入”或“打开文件”,所以没有任何可用的功能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()函数,以防万一您宁愿使用可变参数调用约定。