[英]How to use scanf in linux kernel?
我是內核編程的新手。 當我嘗試在字符設備文件代碼中使用scanf時,出現以下錯誤消息:error:函數'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()
的源代碼顯示了如何使用vssanf()
函數,以防您想使用varargs調用約定。
您不能在內核中使用libc函數。 僅純C。 我確信有人可以提供等效的內核。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.