1.scanf()与printf()中格式说明符几乎相同的一部分
%d | 用来输入和输出int |
%ld | 用来输入和输出long int |
%lld | 用来输入和输出long long int |
%hd | 用来输入和输出short |
%i | 用来输入和输出有符号十进制整数 |
%u | 用来输入和输出无符号十进制整数 |
%lu | 用来输入和输出无符号十进制长整数 |
%llu | 用来输入和输出无符号十进制长长整数 |
%hu | 用来输入和输出无符号短十进制整数 |
%o | 用来输入和输出八进制整数 |
%lo | 用来输入和输出长八进制整数 |
%ho | 用来输入和输出短八进制整数 |
%#o | 用来输出八进制整数,数字前有0 |
%x | 用来输入和输出十六制整数,字母小写 |
%#x | 用来输出十六制整数,字母小写,数字前有0x |
%lx | 用来输入和输出长十六制整数,字母小写 |
%X | 用来输入和输出十六制整数,字母大写 |
%#X | 用来输出十六制整数,字母大写 ,数字前有0X |
%lX | 用来输入和输出长十六制整数,字母大写 |
%c | 用来输入和输出单个字符 |
%s | 用来输入和输出一串字符串 输入时遇空格,制表符或换行符结束 输出时连格式说明符一起输出 printf("%s","%d%f",a,b);输出 %d%f |
%f | 用来输入和输出float,输出double |
%lf | 用来输入和输出double(double输出用%f和%lf都可以) |
%Lf | 用来输入和输出long double |
%e | 用来输入和输出指数,字母小写 |
%le | 用来输入和输出长指数,字母小写 |
%E | 用来输入和输出指数,字母大写 |
%lE | 用来输入和输出长指数,字母大写 |
%g | 用来输入和输出指数或float(输出最短的一种),字母小写 |
%lg | 用来输入和输出长指数或double(输出最短的一种),字母小写 |
%G | 用来输入和输出指数或float(输出最短的一种),字母大写 |
%lG | 用来输入和输出长指数或double(输出最短的一种),字母大写 |
2.scanf()独有
%*(所有类型),如%*d | 用来输入一个数,字符或字符串而不赋值(跳过无关输入) 如scanf("%d%*c%d",&a,&b); 这样就可以只将1+2中的1和2赋值给a和b。 |
%m(所有类型),其中m为常数 | 限定输入范围,如scanf(“%4d”,&a)时输入123456,只把1234赋值给a |
,(逗号) | 无实际用处,仅用于美观。如scanf(“%d,%d,%d”,&a,&b,&c); |
-(横杠) :(冒号) | 方便日期等输入,但不赋值 scanf(“%d-%d-%d”,&a,&b,&c);需输入2018-11-20 scanf(“%d:%d:%d”:&a,&b,&c);需输入2018:11:20 |
所有字符串,符号(包括空格) 数字(不与输入数相挨) | 任何所写的东西都必须如横杠一般先输入(不赋值),不然系统报错 scanf(“%d 456 %d”,&a,&b); 需输入 1 456 7(1和7之间有 456 (前后各一个空格)) 结果为a=1 b=7 |
3.printf()独有
%m.nd %-m.nd (m和n为常数) | m用于在d位数小于m时补空格(右对齐)d位数大于m时忽略 如%5d,输出123, 123(123前面两个空格) .n用于在d位数小于n时补0(右对齐)d位数大于n时忽略 如%.5d,输出123, 00123(123前面两个0) %-m.nd则为左对齐 |
%m.nf %m.nlf %m.nLf %-m.nf %-m.nlf %-m.nLf | m用于在小数位数小于m时补空格(右对齐) 小数位数大于m时忽略 (小数点算一位) 如%6f 需输出3.14 结果为 3.14(3.14前面两个空格) .n用于控制小数位数 小数部分长度大于n则四舍五入 小数部分长度小于于n则补0 如%.6f 需输出3.14 结果为3.140000 如%6f 需输出3.1415926 结果为3.141593 %-m.nf %-m.nlf %-m.nLf 则为左对齐 |
%m.ns %-m.ns | m用于在字符串位数小于m时补空格(右对齐)字符串位数大于m时忽略 如%5s,输出abc, abc(abc前面两个空格) .n用于控制字符串位数 长度大于n则仅输出前n位 字符串长度小于于n时忽略 如%.6s 需输出abcdefg 结果为abcdef 如%6f 需输出abc 结果为abc %-m.ns则为左对齐 |
%mc %-mc | m限制char的输出长度 当m>1时,在左方补m-1个空格 %-mc则为左对齐 |
%m.ne %-m.ne %m.nE %-m.nE | m用于控制指数长度,在QT中,指数部分占五位(如 e+001 ) 位数小于m时左方补空格 位数大于m时忽略 如printf("%15.5e",a); 设a为123.456789 结果为 1.23457e+002(三个空格) .n用于控制小数长度 小数部分长度大于n则四舍五入 小数部分长度小于于n则补0 如printf("%15.5e",a); 设a为123.456789 结果为 1.23457e+002(三个空格) %-m.ne %-m.nE则为左对齐 |
%*(整型)如%*d %-*(整型) | 在输出项中规定整型数据的宽度,少于限制补空格,大于忽略 如printf(“%*d”,a,b); a=5 b=123 结果为 123(前面有两个空格) %-*(整型) 左对齐 |
%0*(整型) | 在输出项中规定整型数据的宽度,少于限制补0,大于忽略 如printf(“%0*d”,a,b); a=5 b=123 结果为 00123 |
注意 | printf()中的运算是从右至左,而输出是从做左至右 如a=1,printf(“%d %d %d”,a++,a++,a++); 结果为3 2 1 |