ToB企服应用市场:ToB评测及商务社交产业平台
标题:
各种闲着没事的 scanf 奇葩用法
[打印本页]
作者:
小小小幸运
时间:
2023-11-27 01:30
标题:
各种闲着没事的 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。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4