说明:本文不适合新手学习,适合用来做参考。本文参考有其他博客的内容,不过年代久远已经忘记了,在此感谢各位博主!scanf函数用 法:int scanf(char format[,argument,...]); //scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。调用格式:scanf("<格式化字符串>",<地址表>); //scanf()函数返回成功赋值的数据项数,出错时则返回EOF。其控制串由三类字符构成:1、格式化说明符;2、空白符;3、非空白符;1)格式化说明符
格式字符 | 说明 |
%a、%A | 读入一个浮点值(仅C99有效) |
%f 、%F、%e、%E、%g 、%G | 读入一个浮点数 |
%c、%C | 读入一个字符 |
%d | 读入十进制整数 |
%s | 读入一个字符串 |
%p | 读入一个指针 |
%u | 读入一个无符号十进制整数 |
%n | 至此已读入值的等价字符数 |
%[] | 扫描字符集合 |
%% | 读%符号 |
%o | 读入八进制整数 |
%x 、%X | 读入十六进制整数 |
%i | 读入十进制,八进制,十六进制整数 |
2)空白字符空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。3)非空白字符一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。fscanf函数Aformat specifierforfscanffollows this prototype:%[][width][length]specifierTheformat specifiercontain sub-specifiers:asterisk(),widthandlength(in that order), which are optional and follow these specifications:
sub-specifier | description |
---|---|
An optional starting asterisk indicates that the data is to be read from the stream but ignored (i.e. it is not stored in the location pointed by an argument). 注:加上可将该位置数据忽略 | |
width | Specifies the maximum number of characters to be read in the current reading operation (optional). 注:比如填入7.3,表示整数部分宽度为7,小数部分只读到第3位;也可以不填,不填则将对应数据不带舍入地读入 |
length | One ofhh,h,l,ll,j,z,t,L(optional). This alters the expected type of the storage pointed by the corresponding argument (see the last table). |
Where thespecifiercharacter at the end is the most significant component, since it defines which characters are extracted, their interpretation and the type of its corresponding argument:
specifier | Description | Characters extracted |
---|---|---|
i,u | Integer | Any number of digits, optionally preceded by a sign (+or-). Decimal digits assumed by default (0-9), but a0prefix introduces octal digits (0-7), and0xhexadecimal digits (0-f). |
d | Decimal integer (十进制数) |
Any number of decimal digits (0-9), optionally preceded by a sign (+or-). |
o | Octal integer | Any number of octal digits (0-7), optionally preceded by a sign (+or-). |
x | Hexadecimal integer (16进制数) | Any number of hexadecimal digits (0-9,a-f,A-F), optionally preceded by0xor0X, and all optionally preceded by a sign (+or-). |
f,e,g | Floating point number (浮点数) |
A series of decimal digits, optionally containing a decimal point, optionally preceeded by a sign (+or-) and optionally followed by theeorEcharacter and a decimal integer (or some of the other sequences supported bystrtod). Implementations complying with C99 also support hexadecimal floating-point format when preceded by 0x or 0X . |
a | ||
c | Character | The next character. If a width other than1is specified, the function reads exactlywidth characters and stores them in the successive locations of the array passed as argument. No null character is appended at the end. |
s | String of characters | Any number of non-whitespace characters, stopping at the first whitespacecharacter found. A terminating null character is automatically added at the end of the stored sequence. |
p | Pointer address | A sequence of characters representing a pointer. The particular format used depends on the system and library implementation, but it is the same as the one used to format%pin fprintf. |
[characters] | Scanset | Any number of the characters specified between the brackets. A dash (-) that is not the first character may produce non-portable behavior in some library implementations. |
[^characters] | Negated scanset | Any number of characters none of them specified as characters between the brackets. |
n | Count | No input is consumed. The number of characters read so far fromstreamis stored in the pointed location. |
% | % | A%followed by another%matches a single%. |
Except forn, at least one character shall be consumed by any specifier. Otherwise the match fails, and the scan ends there.
This is a chart showing the types expected for the corresponding arguments where input is stored (both with and without alengthsub-specifier):(length放在specifiers前会产生不同的效果,更具体。也可以选择不使用)
specifiers | |||||||
---|---|---|---|---|---|---|---|
length | d i | u o x | f e g a | c s [] [^] | p | n | |
(none) | int | unsigned int | float | char* | void | int | |
hh | signed char | unsigned char | signed char | ||||
h | short int | unsigned short int | short int | ||||
l | long int | unsigned long int | double | wchar_t | long int | ||
ll | long long int | unsigned long long int | long long int | ||||
j | intmax_t | uintmax_t | intmax_t | ||||
z | size_t | size_t | size_t | ||||
t | ptrdiff_t | ptrdiff_t | ptrdiff_t | ||||
L | long double |
Note:*Yellow rows indicate specifiers and sub-specifiers introduced by C99.原文链接: https://www.cnblogs.com/stxs/p/8675502.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/271523
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!