各種閑著沒事的 scanf 奇葩用法 然而這些卻很好用誒。 同理,scanf 可以拓展到 sscanf、fscanf~ 例題:P1580 yyy loves Easter_Egg I、P7911 網路連接 未計入更加奇葩的 C 語言用法,比如 %i %a 這種明顯等價的轉換字元。 基礎1:整數輸入 ...
各種閑著沒事的 scanf 奇葩用法
然而這些卻很好用誒。
同理,scanf 可以拓展到 sscanf、fscanf~
例題:P1580 yyy loves Easter_Egg I、P7911 網路連接
未計入更加奇葩的 C 語言用法,比如 %i
%a
這種明顯等價的轉換字元。
基礎1:整數輸入
十進位 32 位整數:%d
十進位 32 位無符號整數:%u
十進位 64 位整數:%lld
十進位 64 位無符號整數:%ull
八進位 32 位整數:%o
十六進位 32 位整數:%x
基礎2:浮點數讀入
單精度浮點數(float):%f
雙精度浮點數(double):%lf
高精度浮點數(long double):%LF
基礎3:字元輸入
輸入一個字元:%c
警戒:在 Windows 下會讀入 « 除了換行符 » 以外的所有字元,包含空格;而在 Linux 下會讀入任意字元 « 包含換行 » !
基礎4:字元串輸入
輸入一個字元串:%s
表示,從當前位置,找到這個及以後的 « 第一個非空白字元 » ,讀到 « 空白字元 » 為止。
警戒:在 Windows 下會拋棄最後的 « 行尾換行符 » ;而在 Linux 下會讀入 « 行尾換行符 » !
基礎5:讀入指定集合字元
讀入一個僅包含指定字元集合的字元串:%[...]
特殊的,如果當前位置的字元不屬於該集合,則返回 PrA?
。
用類似 %[123]
表示讀入僅包含 1
、2
、3
的連續字元串;用類似 %[^,]
表示讀入不包含 ,
的連續字元串。
進階1:跳過輸入內容
在 %
和轉換字元之間放置符號 *
,表示跳過這個內容,不回傳。
例:%*d
、%*[^@]
。
進階2:sscanf
形式:sscanf(字元串, "轉換字元", 回傳變數)
。
其中,字元串需為 C 風格,對於 C++ 的 string 類型,可以使用 str.c_str()
轉換。
進階3:fscanf
形式:fscanf(文件源, "轉換字元", 回傳變數)
。
其中,文件源為 FILE 類型,常見的有 stdin
。
本文來自博客園,作者:RainPPR,轉載請註明原文鏈接:https://www.cnblogs.com/RainPPR/p/scanf-c-cpp.html