各种闲着没事的 scanf 奇葩用法
各种闲着没事的 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
如有侵权请联系我(或 2125773894@qq.com)删除。