博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

printf跟scanf格式

Posted on 2020-11-16 22:10  勤劳勇敢懒羊羊  阅读(134)  评论(0编辑  收藏  举报

一:printf格式字符串
函数原型在头文件“stdio.h”中

1.一般形式
一般形式为: %[标志][输出最小宽度][.精度][长度]类型其中方括号[]中的项为可选项

2.类型字符

d                 以十进制形式输出带符号整数(正数不输出符号)
o                 以八进制形式输出无符号整数(不输出前缀O)
x                 以十六进制形式输出无符号整数(不输出前缀OX)
u                 以十进制形式输出无符号整数
f                 以小数形式输出单、双精度实数
e                 以指数形式输出单、双精度实数
g                 以%f%e中较短的输出宽度输出单、双精度实数
c                 输出单个字符
s                 输出字符串

3.标志字符
标志格式字符     标 志 意 义

  •           结果左对齐,右边填空格
  •          输出符号(正号或负号)
    空格 输出值为正时冠以空格,为负时冠以负号

对c,s,d,u类无影响;对o类, 在输出时加前缀0;

                             对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点

. 如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数
h 表示按短整型量输出
l 表示按长整型量输出

4.使用printf函数时注意的问题
输出表列中的求值顺序:不同的编译系统不一定相同,可以从左到右,也可从右到左。

Turbo C是按从右到左进行的。但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右

二:scanf格式字符串
函数原型在头文件“stdio.h”中

1.一般形式
一般形式为: %[*][输入数据宽度][长度]类型 其中有方括号[]的项为任选项

2.类型字符

d     输入十进制整数
o     输入八进制整数
x     输入十六进制整数
u     输入无符号十进制整数
f或e    输入实型数(用小数形式或指数形式)
c     输入单个字符
s     输入字符串

3.标志字符

  •             表示该输入项读入后不赋予相应的变量,即跳过该输入值
               【如:scanf("%d %*d %d",&a,&b);当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b】
    

% 宽度,如果时小数包含小数点
【比如你的scanf语句吸收格式字段是%4f,但是你输入了3.1415926那么,它只会吸收3.14,

              作为浮点类型。后面的15926以整型的方式存在于缓存中。】

h 表示输入短整型数据
l 表示输入长整型数据(如%ld) 和单精度浮点数(如%lf)