簡體   English   中英

sscanf會修改傳遞給它的字符串嗎?

[英]Does sscanf modify the string passed to it?

我可以知道sscanf是否修改了傳遞給它的字符串。 還是有人可以指出我在哪里可以找到sscanf的源代碼?

我下載了glibc,發現以下內容:

extern int sscanf (__const char *__restrict __s,
               __const char *__restrict __format, ...) __THROW;
extern int sscanf (__const char *__restrict __s,
               __const char *__restrict __format, ...) __THROW;

sscanf永遠不會修改您傳遞給它的字符串; 您可以通過const限定詞來判斷。

您可以在其Gitweb上找到sscanf的Glibc源代碼。

有幾個不錯的C資源。 對於glibc ,《 GNU C庫參考手冊》應該是您的聖經。 同樣,通常,在查找特定命令的文檔時,谷歌搜索“ man命令”通常會很快獲得所需的內容。

更具體地說,對於sscanf() ,GNU C庫手冊明確指出:

如果在重疊的對象之間進行復制,則該函數的行為不確定(例如,如果s也作為參數提供,以接收在'%s','%S'或'%[轉換。

因此,通常它不會做任何事情,但是如果您在正在讀取的字符串和要分配給其的變量之間進行一些松散的自引用,它將具有未定義的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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