簡體   English   中英

如何在Linux內核中使用scanf?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM