〖知识点〗C语言格式化输入输出

时间:2020-11-20 17:55:00 来源:互联网 作者: 神秘的大神 字体:

usage里面字符串可以多行格式化,示例如下:
fprintf(stderr, "sub-command:]\n\t%-12s\t%-37s\t%-s\n\t%-12s\t%-37s\t%-s\n\t%-12s\t%-37s\t%-s\n", "------------", "", "e.g:------------------------", "-----", "-------------------------------------", "e.g:---------------------", "----", "---------------------------", "e.g:-------------------------------");  

 结果:

sub-command:]
        ------------                                            e.g:------------------------
        -----           -------------------------------------   e.g:---------------------
        ----            ---------------------------             e.g:-------------------------------

 

  • 格式输出函数printf()
    • 调用形式一般为:printf("格式化控制字符串",输出表列);
    • 格式化控制字符串用于指定输出格式,它有三种形式:
      • 转义字符:用来输出转义字符所代表的控制代码或者特殊字符,比如常用的‘\n'、‘\t'
      • 普通字符:需要原样输出的字符。
      • 格式说明符:规定了相应输出表列内容的输出格式,以%打头,如%d、%o等
    • 输出表列为若干需要输出的数据项,它与格式说明符在数量和类型上一一对应;
    • 格式字符m指定输出数据所占宽度,n对实数表示输出n位小数,对字符串表示截取的字符个数,'+'表示右对齐,通常省略。
    • '-'表示左对齐,l用于长整型数据,可加在d、o、x、u前
更多格式说明符及其组合形式如下所示:
格式字符
数据对象
输出形式
数据输出方法
%(+)-md
int
unsigned int
short
unsigned short
char
十进制整数
1、无m按实际位数输出
 
2、有m输出m位;超过m位,按实际位数输出,不足补空格
 
3、有+(默认为+)右对齐(左补空格)
 
4、有-左对齐(右补空格)
 
 
%(+)-mo
八进制整数
%(+)-mx
十六进制整数
%(+)-mu
无符号整数
%(+)-mld
long
unsigned long
十进制整数
%(+)-mlo
八进制整数
%(+)-mlx
十六进制整数
%(+)-mlu
无符号整数
%(+)-m.nf
float
double
 
十进制小数
%(+)-m.ne
十进制指数
%(+)-g
自动选用%f和%e中较短的输出宽度输出单、双精度浮点数
%(+)-mc
char
int
short
单个字符
1、无m输出单个字符
2、有m输出m位,补空格
3、有+(默认为+)右对齐(左补空格)
4、有-左对齐(右补空格)
%(+)-m.ns
字符串
一串字符
1.无m、n按实际字符串输出全部字符
2、有m、n仅输出前n个字符,补空格
3.有+(默认为+)右对齐(左补空格)
4、有-左对齐(右补空格)
  • 格式输入函数scanf()
    • 调用格式一般为:scanf("格式化控制字符串",地址表列);
    • 格式化控制字符串和printf()函数含义相似,所不同的是它是对输入格式进行控制;
    • 地址表列是有若干等待输入的数据所对应的内存单元地址组成,由逗号隔开,一般形式为&a,a为变量;
    • 地址表列在数量和类型上和格式化控制字符串中的格式说明符一一对应;
    • 格式字符h表示输入短型数据,可用在d、o、x前面,m指定输入数据所占宽度;
    • '*'表示对应的数据项读入后不赋给相应的变量
更多格式说明符及其组合如下:
 
 
格式字符
数据对象
输入形式
数据输入方法
%md
int
short
unsigned int
unsigned short
十进制整数
1、无m按实际位数输入
 
2、有m输入m位,不足m则跟回车键
%mo
八进制整数
%mx
十六进制整数
%mld
long
unsigned long
十进制整数
%mlo
八进制整数
%mlx
十六进制整数
%mlf
float
double
十进制整数
%mle
%mc
char
单个字符
1、无m取单个字符
2、有m输入m位,仅取第一个字符
%ms
字符串
一串字符
1、无m取回车或空格前若干字符
2、有m仅取前m字符