精华内容
下载资源
问答
  • printf函数格式化输出数据

    千次阅读 2019-07-17 22:03:56
    分析以上程序: scanf("%lf", &d); %lf:表示从终端接收一个双精度浮点型数据; &d:表示变量d在内存中的存储地址;... printf("%5.2lf\n", d); %5.2lf中的5.2表示输出数据占5列,其中小数占...

    分析以上程序

    1. scanf("%lf", &d);
      1. %lf:表示从终端接收一个双精度浮点型数据;
      2. &d:表示变量d在内存中的存储地址;
      3. scanf("%lf", &d);表示从终端输入的数据存储到地址&d的存储单元,也就是将数据赋给变量d。
    2. printf("%5.2lf\n", d);
      1. %5.2lf中的5.2表示输出数据占5列,其中小数占2位,第3位小数按四舍五入处理。输出的数据在所占列区域右对齐。如果是%-5.2lf,那么输出的数据在所占列区域左对齐。
      2. 注意:
        1. float型数据,只有6位有效数字;
        2. double型数据,只有15位有效数字;

    一、有关数据输入输出的概念

    1. 所谓的输入输出是以计算机主机为主体而言的。
      1. 从计算机向输出设备(显示器、打印机等)输出数据称为输出。
      2. 从输入设备(键盘、磁盘、扫描仪等)向计算机输入数据称为输入。

    1. C语言本身不提供输入输出语句,输入输出操作是由C标准函数库中的函数来实现的。C提供的标准函数以库的形式在C的编译系统中提供,它们不是C语言文本中的组成部分。
      1. 提及:C语言程序执行过程:预处理、编译、连接、执行。(一个C语言程序可以包含若干个源程序文件,在编译时以文件模块为单位)
        1. 预处理:(预处理器)
          1. 将头文件内容读写进来,代替# include预处理指令;
          2. 将符号常量全部置换为字面常量;

        结果:预处理后得到一个完整、可编译的源程序文件

        1. 编译:(编译器)
          1. 将可编译的源程序翻译成二进制的指令,得到目标文件(*.obj)
        2. 连接:(连接器)
          1. 将源程序编译后得到的目标文件(*obj)与源程序中包含的系统库函数相连接,生成一个可执行的目标程序(*.exe)。注意:系统库函数,是已经编译好的目标文件(*.obj)。
        3. 执行:运行*.exe可执行文件(程序)
      • 不把输入输出作为C语句的目的?
        1. 使C语言编译系统简单精炼,因为将语句翻译成二进制的指令是在编译阶段完成的,没有输入输出语句就可以避免在编译阶段处理与硬件有关的问题,可以使编译系统简化,而且通用性强,可移植性好。
      • 如果在源程序中有printf函数,在编译时并不把它翻译成目标指令,而是在连接阶段与系统函数库相连接后,在执行阶段中调用系统函数库中的printf函数。
      • C语言函数库中有一批“标准输入输出函数”,它是以标准的输入输出设备(一般为终端设备)为输入输出对象的。其中有:
        1. 输入输出一个字符:
          1. putchar(输出一个字符);
          2. getchar(输入一个字符);
        2. 格式输入输出:
          1. printf(格式输出);
          2. scanf(格式输入);
        3. 输入输出一个字符串:
          1. puts(字符串输出);
          2. gets(字符串输入);
    • 在使用系统库函数时,要在程序文件的开头用预处理指令# include把有关头文件放在本程序中。如:

           # include <stdio.h>

      1. 用预处理指令# include的目的是将所需要的“头文件”包括到用户源文件中。在头文件中包含了所需要调用的函数的有关信息。由于# include指令都放在程序文件的开头,因此这类文件称为头文件。
      2. “stdio.h”头文件包含了与标准I/O库有关的变量定义和宏定义以及对函数的声明。在调用标准输入输出库函数时,文件开头应该有以下预处理指令:

                            # include <stdio.h>

                            或

                            # include "stdio.h"

      1. 在程序进行预处理时,系统将stdio.h头文件的内容调出来放在此位置,取代本行# include指令。这样在本程序的模块中就可以使用这些内容了。
      2. 以上两种# include指令形式的区别:
        1. 用尖括号形式(如<stdio.h>)时,编译系统从存放C编译系统的子目录中去找所要包含的文件(如stdio.h),这称为标准方式。
        2. 用双引号形式(如"stdio.h"),在编译时,编译系统先在用户的当前目录(一般是用户存放源程序文件的子目录)中寻找要包含的文件。若找不到,再按标准方式查找。
        3. 注意:
          1. 如果用# include指令是为了使用系统库函数,因而要包含系统提供的相应头文件,以用标准方式为宜,以提高效率。
          2. 如果用户想包含的头文件不是系统提供的相应头文件,而是用户自己编写的头文件(这种文件一般都存放在用户当前目录中),这时应当用双引号形式,否则会找不到所需的文件。如果该头文件不在当前目录中,可以在双引号中写出文件路径(如# include "C:\temp\filel.h"),以便系统能从中找到所需的文件(不推荐此做法,最好是把此头文件拷贝到当前目录下)。

    二、用printf函数输出数据

             printf函数(格式输出函数)用来向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。

    1. printf函数的一般格式

             printf(格式控制,输出表列);

      1. “格式控制”是用双引号括起来的字符串,因此称“格式控制字符串”。包含两个信息:
        1. 格式声明
          1. 格式声明由“%”和格式字符组成。格式声明总是由“%”字符开始。
          2. 作用:将输出的数据转换为指定格式然后输出。
        2. 普通字符
          1. 普通字符需要在输出时原样输出的字符。
      2. “输出表列”是程序需要输出的一些数据,可以是常量、变量或表达式。
    1. 格式字符

          常用格式字符

    1. d格式字符。用来输出一个有符号的十进制整数。(int)
      1. 可以在格式声明中指定输出数据的域宽(所占的列数),如:

    解析:

    • %-5d表示数据占5列,向所占列数区域左对齐;
    • %5d表示数据占5列,向所占列数区域右对齐;
      1. 若输出long(长整型)数据,在格式字符d前面加字母l(代表long),即"%ld"。
      2. 若输出long long(双长整型)数据,在格式字符d前面加两个字母ll(代表long long),即“%lld”。
      3. 若输出short(短整型)数据,在格式字符d前面加h,即“%hd”。
    1. c格式字符。用来输出一个字符。(char)
      1. 也可以指定域宽

      1. 一个整数,如果在0~127范围中,也可以用“%c”使之按字符形式输出。在输出前,系统会将该整数作为ASCII码转换成相应的字符。

           如果整数比较大,则把它的最后一个字节的信息以字符形式输出。

           因为用%c格式输出时,只考虑一个字节,存放a的存储单元中最后一个字节中的信息是01111001,即十进制的121,它是'y'的ASCII码。

    1. o格式字符。以无符号的八进制整型形式输出。将内存单元中的各位的值(0或1)按八进制形式输出。因此输出的数值不带符号,即将符号位也一起作为八进制数的一部分输出。(int)

           -1在内存单元中的存放形式(以补码形式存放在4个字节)如下:

            按内存单元中实际的二进制数从右至左每3位为一组构成八进制数形式:

            八进制数是不会带负号的,用%o格式声明可以得到存储单元中实际的存储情况。

      1. 也可以用"%lo"输出长整型数据;

      1. 也可以用“%ho”输出短整型数据;

      1. 也可以指定输出数据的域宽,如“%12o”

    1. x、X、#x、#X格式字符。以无符号的十六进制形式输出整数。(推荐使用:#X)(int)

      1. 也可以用“%lx”输出长整型数据;

      1. 也可以用“%hx”输出短整型数据;

      1. 也可以指定输出数据的域宽,如“%12x”、“%#12X”;

    1. u格式字符。以无符号的十进制整数形式输出,可以是整型、字符型。(int)

      1. 也可以用“%lu”输出长整型数据;

      1. 也可以用“%hu”输出短整型数据;

      1. 也可以指定输出数据的域宽,如“%12u”

    1. s格式字符。用来输出一个字符串。

    1. f格式字符。用来输出实数(包括单、双精度、长双精度),以小数形式输出。
      1. 基本型,用%f
        1. 不指定输出数据的域宽,由系统根据数据的实际情况决定数据所占的列数。系统处理的方法一般是:实数中的整数部分全部输出,小数部分只输出6位。

      1. 指定数据宽度和小数位数,用%m.nf
        1. %m.nf表示输出数据占m列,其中包含n位小数,对其后一位采取四舍五入方法处理,即向上或向下取近似值。如果把小数部分指定为0,则不仅不输出小数,而且小数点也不输出。

    注意

    • 双精度浮点数(double)只有15位有效数字;
    • 单精度浮点数(float)只有6位有效数字;
    1. e、E格式字符。以指数形式输出浮点数。

      1. 可以用“%m.ne”的格式声明

    1. g、G格式字符。用来输出浮点数,系统自动选f格式或e格式输出,选择其中长度较短的格式,不输出无意义的0

     

                注意:如果想输出字符“%”,应该在“格式控制字符串”中用连续两个“%”表示。如:

     

    展开全文
  • printf输出格式总结

    万次阅读 多人点赞 2016-06-12 15:13:26
    其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。 printf函数调用的一般形式 printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前...

    printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。

    printf函数调用的一般形式

    printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。 但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。 printf函数调用的一般形式为:
        printf(“格式控制字符串”, 输出表列)
    其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:
    • “%d”表示按十进制整型输出;
    • “%ld”表示按十进制长整型输出;
    • “%c”表示按字符型输出等。
    非格式字符串原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。

    格式字符串

    1) 类型
    类型字符用以表示输出数据的类型,其格式符和意义如下表所示:
    格式字符意义
    d以十进制形式输出带符号整数(正数不输出符号)
    o以八进制形式输出无符号整数(不输出前缀0)
    x,X以十六进制形式输出无符号整数(不输出前缀Ox)
    u以十进制形式输出无符号整数
    f以小数形式输出单、双精度实数
    e,E以指数形式输出单、双精度实数
    g,G以%f或%e中较短的输出宽度输出单、双精度实数
    c输出单个字符
    s输出字符串
     
    2) 标志
    标志字符为 -、+、# 和空格四种,其意义下表所示:
    标 志意义
    -结果左对齐,右边填空格
    +输出符号(正号或负号)
    空格输出值为正时冠以空格,为负时冠以负号
    #对c、s、d、u类无影响;
    对o类,在输出时加前缀o;
    对x类,在输出时加前缀0x;
    对e、g、f 类当结果有小数时才给出小数点。

    3) 输出最小宽度
    用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。

    4) 精度
    精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

    5) 长度
    长度格式符为h、l两种,h表示按短整型量输出,l表示按长整型量输出。

    #include<stdio.h> 
    #include<string.h> 
    int main() 

    char c, s[20]; 
    int a=1234;
    float f=3.141592653589; 
    double x=0.12345678912345678; 
    strcpy(s, "Hello,World"); 
    c='\x41'; 
    printf("a=%d\n", a);//按照十进制整数格式输出,显示 a=1234
    printf("a=%d%%\n", a);//输出%号 结果 a=1234%
    printf("a=%6d\n", a);//输出6位十进制整数 左边补空格,显示 a= 1234
    printf("a=%06d\n", a);//输出6位十进制整数 左边补0,显示 a=001234
    printf("a=%2d\n", a);//a超过2位,按实际输出 a=1234
    printf("a=%-6d\n", a);///输出6位十进制整数 右边补空格,显示 a=1234
    printf("f=%f\n", f);//浮点数有效数字是7位,结果 f=3.141593
    printf("f=6.4f\n", f);//输出6列,小数点后4位,结果 f=3.1416
    printf("x=%lf\n", x);//输出长浮点数 x=0.123457
    printf("x=%18.16lf\n", x);//输出18列,小数点后16位,x=0.1234567891234567
    printf("c=%c\n", c);     //输出字符 c=A
    printf("c=%x\n", c);//以十六进制输出字符的ASCII码 c=41
    printf("s[]=%s\n", s);//输出数组字符串s[]=Hello,World
    printf("s[]=%6.9s\n", s);//输出最多9个字符的字符串 s[]=Hello,Wor
    return 0;
    }

    展开全文
  • printf 输出格式

    千次阅读 2015-04-13 15:25:19
    printf 输出格式 (一)使用printf输出各种格式的字符串 1. 原样输出字符串:  printf(“%s”, str); 2. 输出指定长度的字符串, 超长时不截断, 不足时右对齐:  printf(“%Ns”, str); –N 为指定长度的10进制...

    printf 输出格式

    (一)使用printf输出各种格式的字符串

    1. 原样输出字符串:
        printf(“%s”, str);

    2. 输出指定长度的字符串, 超长时不截断, 不足时右对齐:
        printf(“%Ns”, str);             –N 为指定长度的10进制数值

    3. 输出指定长度的字符串, 超长时不截断, 不足时左对齐:
        printf(“%-Ns”, str);            –N 为指定长度的10进制数值

    4. 输出指定长度的字符串, 超长时截断, 不足时右对齐:
        printf(“%N.Ms”, str);           –N 为最终的字符串输出长度
                                        –M 为从参数字符串中取出的子串长度

    5. 输出指定长度的字符串, 超长时截断, 不足时左对齐是:
        printf(“%-N.Ms”, str);          –N 为最终的字符串输出长度
                                        –M 为从参数字符串中取出的子串长度

     ★d格式符,用来输出十进制整数.

                    ⑴%d,按整型数据的实际长度输出.

                    ⑵%md,m为指定的输出字段的宽度,数据位数小于m,左边补空格,若大于m,按实际长度输出

                    ⑶%ld,输出长整型数据(long)

           ★o格式符,以八进制输出整数(不带符号,他将符号位也作为八进制数的一部分了)
                    ⑴%o,参考%d的解释.

                    ⑵%lo,参考%ld的解释.

                    ⑶%mo,参考%md的解释.

            ★x,X格式符,以十六进制输出整数
                    也是3种参考%d的解释.
            ★u格式符,用来将unsigned型数据,既无符号数,以十进制形式输出
            ★c格式符,输出一个字符.
            ★s格式符,输出一个字符串.
                    ⑴%s,如printf(“%s”,”CHINA”)

                    ⑵%ms,输出的字符串占m列,字符串长度小于m,左边补空格,如果超出则全部输出.

                    ⑶%-ms,串小于m,则在m列范围内字符串左靠,右补空格.

                    ⑷%m.ns,输出占m列,但只取字符串左端n个字符.这n个字符输出在m列的右边,然后左边补空格.

                    ⑸%-m.ns,和上面的放下,就是n个字符输出在m列的左侧,右边补空格.n>m,那么m自动取n的值,既保证n个字符正常输出.

                    printf(“%3s,%7.2s,%.4s,%-5.3s
    “,”CHINA”,”CHINA”,”CHINA”,”CHINA”);

            ★f格式符,用来输出实数,以小数形式输出.

                    ⑴%f,全部输出,而且输出6位小数.

                    ⑵%m.nf,输出数据共占m列,n位小数,如果数据长度小于m那么左边补空格

                    ⑶%-m.nf,和上面的m.nf相反,为左靠齐,右补空格.

            ★e,E格式符,以指数形式输出实数

                    ⑴%e,不指定输出数据所占的宽度和数字部分的小数位数.

                    ⑵%m.ne和%-m.ne,这里n指小数部分的位数

            ★g,G格式符,用来输出实数,它根据数值大小,自动选择f格式还是e格式,(选占宽最少的一种),且不输出无意义的0.这种格式用的不多.

     

     

     

     

     

     

     

     


    文章分类:综合技术


     printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出
      信息。在编写程序时经常会用到此函数。函数的原型为:
      int printf(const char *format, ...);
      函数返回值为整型。若成功则返回输出的字符数,输出出错则返回负值。
      printf()函数的调用格式为:
      printf("<格式化字符串>", <参量表>);
      其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原
      样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,
      用来确定输出内容格式。
      参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出
      参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想
      不到的错误。
      注意:函数printf从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有我们看见的结果是,从右边开始处理的。
      1. 格式化规定符
      Turbo C2.0提供的格式化规定符如下:
      ━━━━━━━━━━━━━━━━━━━━━━━━━━

    a 符号 作用
      ——————————————————————————
      %d 十进制有符号整数
      %u 十进制无符号整数
      %f 浮点数
      %s 字符串
      %c 单个字符
      %p 指针的值
      %e 指数形式的浮点数
      %x, %X 无符号以十六进制表示的整数
      %o 无符号以八进制表示的整数
      %g 自动选择合适的表示法
      ━━━━━━━━━━━━━━━━━━━━━━━━━━
      说明:
      (1). 可以在"%"和字母之间插进数字表示最大场宽。
      例如: %3d 表示输出3位整型数, 不够3位右对齐。
      %9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,
      小数点占一位, 不够9位右对齐。
      %8s 表示输出8个字符的字符串, 不够8个字符右对齐。
      如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。
      但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;
      若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。
      另外, 若想在输出值前加一些0, 就应在场宽项前加个0。
      例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度
      为4位。
      如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,
      小数点前的数字代表最小宽度。
      例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则
      第9个字符以后的内容将被删除。
      (2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。
      例如: %ld 表示输出long整数
      %lf 表示输出double浮点数
      (3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可
      说明输出为左对齐, 否则为右对齐。
      例如: %-7d 表示输出7位整数左对齐
      %-10s 表示输出10个字符左对齐
      2. 一些特殊规定字符
      ━━━━━━━━━━━━━━━━━━━━━━━━━━

    b 字符 作用
      ——————————————————————————
      \n 换行
      \f 清屏并换页
      \r 回车
      \t Tab符
      \xhh 表示一个ASCII码用16进表示,
      其中hh是1到2个16进制数
      ━━━━━━━━━━━━━━━━━━━━━━━━━━
      由本节所学的printf()函数, 并结合上一节学习的数据类型, 编制下面的程
      序, 以加深对Turbo C2.0数据类型的了解。

    示例
      #include<stdio.h>
      #include<string.h>
      int main()
      {
      char c, s[20], *p;
      int a=1234, *i;
      float f=3.141592653589;
      double x=0.12345678987654321;
      p="How do you do";
      strcpy(s, "Hello, Comrade");
      *i=12;
      c='\x41';
      printf("a=%d\n", a); /*结果输出十进制整数a=1234*/
      printf("a=%6d\n", a); /*结果输出6位十进制数a= 1234*/
      printf("a=%06d\n", a); /*结果输出6位十进制数a=001234*/
      printf("a=%2d\n", a); /*a超过2位, 按实际值输出a=1234*/
      printf("*i=%4d\n", *i); /*输出4位十进制整数*i= 12*/
      printf("*i=%-4d\n", *i); /*输出左对齐4位十进制整数*i=12*/
      printf("i=%p\n", i); /*输出地址i=06E4*/
      printf("f=%f\n", f); /*输出浮点数f=3.141593*/
      printf("f=6.4f\n", f); /*输出6位其中小数点后4位的浮点数
      f=3.1416*/
      printf("x=%lf\n", x); /*输出长浮点数x=0.123457*/
      printf("x=%18.16lf\n", x);/*输出18位其中小数点后16位的长浮点
      数x=0.1234567898765432*/
      printf("c=%c\n", c); /*输出字符c=A*/
      printf("c=%x\n", c); /*输出字符的ASCII码值c=41*/
      printf("s[]=%s\n", s); /*输出数组字符串s[]=Hello, Comrade*/
      printf("s[]=%6.9s\n", s);/*输出最多9个字符的字符串s[]=Hello,
      Co*/
      printf("s=%p\n", s); /*输出数组字符串首字符地址s=FFBE*/
      printf("*p=%s\n", p); /* 输出指针字符串p=How do you do*/
      printf("p=%p\n", p); /*输出指针的值p=0194*/
      getch();
      retunr 0;
      }
      上面结果中的地址值在不同计算机上可能不同。
      例.中第一条语句#include<stdio.h>的含义是调用另一个文件stdio.h, 这
      是一个头文件, 其中包括全部标准输入输出库函数的数据类型定义和函数说明。
      Turbo C2.0对每个库函数便用的变量及函数类型都已作了定义与说明, 放在相应
      头文件"*.h"中, 用户用到这些函数时必须要用#include<*.h>或#include"*. h"
      语句调用相应的头文件, 以供连接。若没有用此语句说明, 则连接时将会出现错
      误。
      printf()和sprintf()在php中的应用
      <?php
      printf("$%01.2f", 43.2); // 运行结果:$43.20
      echo "
      ";
      printf("%d bottles of beer on %s", 100, "the wall");
      echo "
      ";
      //运行结果:100 bottles of beer on the wall
      printf("%15s", "some text"); //运行结果:some text
      ?>
      <?php
      echo "
      ";
      printf("The %2\$s likes to %1\$s", 111, dog);
      echo "
      ";
      //运行结果: The dog likes to bark
      printf("The %1\$s says: %2\$s, %2\$s.", "dog", "bark");
      //运行结果:The dog says: bark, bark.
      ?>
      <?php
      echo "
      ";
      $var1 = 68.75;
      $var2 = 54.35;
      $var3 = $var1 + $var2;
      echo $var3;
      echo "
      ";
      // 变量 $var3 值为 "123.1";
      $formatted = sprintf ("%01.2f", $var3);
      echo "
      ";
      echo $formatted;
      // 变量$var3 值为 "123.10"
      ?>
      <?php
      echo "
      ";
      $money = 1.4;
      $formatted = sprintf ("%-01.2f", $money);
      echo $formatted;
      ?>
      结果:
      $43.20
      100 bottles of beer on the wall
      some text
      The dog likes to 111
      The dog says: bark, bark.
      123.1
      123.10
      1.40

    展开全文
  • printf输出格式

    千次阅读 2019-05-06 12:58:52
    (1)类型类型字符用以表示输出数据的类型,其格式符和意义下表所示: 表示输出类型的格式字符 格式字符意义 a 浮点数、十六进制数字和p-计数法(C99) A 浮点数、十六进制数字和p-计数法(C99) c 输出单个...

    C中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选。
    (1)类型类型字符用以表示输出数据的类型,其格式符和意义下表所示:

    表示输出类型的格式字符格式字符意义
    a浮点数、十六进制数字和p-计数法(C99)
    A浮点数、十六进制数字和p-计数法(C99)
    c输出单个字符
    d以十进制形式输出带符号整数(正数不输出符号)
    e(E)以指数形式输出单、双精度实数
    f以小数形式输出单、双精度实数
    g(G)以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大 于等于精度时使用
    i有符号十进制整数(与%d相同)
    o以八进制形式输出无符号整数(不输出前缀O)
    p指针
    s输出字符串
    x(X)以十六进制形式输出无符号整数(不输出前缀OX)
    u以十进制形式输出无符号整数

    (2)标志
    标志字符为-、+、#、空格和0五种,其意义下表所示:

    标志格式字符标 志 意 义
    -结果左对齐,右边填空格
    +输出符号(正号或负号)
    空格输出值为正时冠以空格,为负时冠以负号
    #对c,s,d,u类无影响;对o类,在输出时加前缀0;对x类, 在输出时加前缀0x或者0X;对g,G 类防止尾随0被删除;对于所有的浮点形式,#保证了即使不跟任何数字,也打印一个小数点字符
    0对于所有的数字格式,用前导0填充字段宽度,若出现-标志或者指定了精度(对于整数),忽略

    (3)输出最小宽度
    用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。

     /*   以十进制形式输出带符号整数(正数不输出符号)   */
         printf("*%-10d*\n", 223);		//*223       *
         printf("*%+10d*\n" , -232);	//*      -232*
         printf("*%2d*\n" , 223);		//*223*
         printf("*%#d*\n" , -232);		//*-232*
         
         /*   以八进制形式输出无符号整数(不输出前缀O)   */
         printf("*%-10o*\n" , 223);		//*337       *
         printf("*%+10o*\n" , -232);	//*37777777430*
         printf("*%o*\n" , 223);		//*337*
         printf("*%#o*\n" , -232);		//*037777777430*
         printf("\n");
       
         /*   以十六进制形式输出无符号整数(不输出前缀OX)   */
         printf("$%-10x$\n" , 223);		//$df        $
         printf("$%010x$\n" , -232);	//$00ffffff18$
         printf("$% x$\n" , 223);		//$df$
         printf("$%#x$\n" , -232);		//$0xffffff18$
         printf("\n");
         /*   以十进制形式输出无符号整数   */
         printf("%-10u\n" , 223);		//223   
         printf("%+10u\n" , -232);		//4294967064
         printf("% u\n" , 223);			//223
         printf("%#u\n" , -232);		//4294967064
         printf("\n");
       
         /*   以小数形式输出单、双精度实数   */
         printf("%-10f\n" , 223.11);		//223.110000
         printf("%+10f\n" , 232.11111111);	//+232.111111
         printf("% f\n" , -223.11);			//-223.110000
         printf("%#f\n" , -232.11111111);	//-232.111111
         printf("\n");
       
         /*   以指数形式输出单、双精度实数   */
         printf("%-10e\n" , 223.11);		//2.231100e+02
         printf("%+10e\n" , 232.11111111);	//+2.321111e+02
         printf("% e\n" , -223.11);			//-2.231100e+02
         printf("%#e\n" , -232.11111111);	//-2.321111e+02
         printf("\n");
        
         /*   以%f%e中较短的输出宽度输出单、双精度实数   */
         printf("%-10g\n" , 223.11);			//223.11    
         printf("%+10g\n" , 232.111111111111);	//  +232.111
         printf("% g\n" , -223.11);				//-223.11
         printf("%#g\n" , -232.111111111111);	//-232.111
         printf("\n");
       
         /*   输出单个字符   */
         printf("%-10c\n" , 'a');		//a         
         printf("%+10c\n" , 97);		//         a
         printf("% c\n" , 'a');			//a
         printf("%#c\n" , 97);			//a
         printf("\n");
      
         /*   输出单个字符   */
         printf("%-20s\n" , "this is a test!");		//this is a test!     
         printf("%+20s\n" , "2342o34uo23u");		//        2342o34uo23u
         printf("% 20s\n" , "this is a test!");		//     this is a test!
         printf("%#s\n" , "2342o34uo23u");			//2342o34uo23u
    

    (4)精度
    精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

    	printf("%.3d\n" , 5555);				//5555
    	printf("%.3f\n" , 0.88888);				//0.889
    	printf("%.3f\n" , 0.9999);				//1.000
    	printf("%.4s\n" , "this is a test!");	//this
    

    (5)长度
    长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。

    使用实例
    h和整数转换说明符一起使用,表示一个short int 或者unsigned short int类型的数值%hu,%hx,%6.4hd
    hh和整数转换说明符一起使用,表示一个short int 或者unsigned short类型的数值%hhu,%hhx,%6.4hhd
    j和整数转换说明符一起使用,表示一个intmax_t或者uintmax_t类型的数值%jd,%8jx
    l和整数转换说明符一起使用,表示一个long int 或者unsigned long int类型的数值%ld,%8lu
    ll和整数转换说明符一起使用,表示一个long int 或者unsigned long int类型的数值 (C99)%lld,%8llu
    L和浮点转换说明符一起使用,表示一个long double的值%Lf,%10.4Le
    t和整数转换说明符一起使用,表示一个ptrdiff_t值(两个指针之间的差相对应的类型)(C99)%td,%12ti
    z和整数转换说明符一起使用,表示一个size_t值(sizeof返回的类型)(C99)%zd,%12zx
    	int a=15;
        float b=138.3576278;
        double c=35648256.3645687;
        char d='p';
        printf("a=%d,%5d,%o,%x\n",a,a,a,a);		//a=15,   15,17,f
        printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);	//b=138.357620,138.357620,138.3576,1.383576e+02
        printf("c=%lf,%f,%8.4lf\n",c,c,c);		//c=35648256.364569,35648256.364569,35648256.3646
        printf("d=%c,%8c\n",d,d);				//d=p,       p
    
    展开全文
  • java printf格式化输出

    千次阅读 2017-08-22 08:07:40
    for(int m=0;m;++m) { System.out.printf("%9.0f%%", 100*interestRate[m]); //其中interestRate[]中为[0.1, 0.11, 0.12, 0.13, 0.14, 0.15]...f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用
  • printf函数输出格式

    2010-04-28 16:17:12
    必须用与数据类型相匹配的输出格式,才能把数据...C语言的printf函数提供了丰富的输出格式printf格式控制的完整格式由前导字符与格式字符构成,即: %前导字符格式字符 其中%:表示格式说明的起始符号,不可缺少。
  • printf格式

    千次阅读 2010-01-05 14:25:00
    1 一般格式printf(格式控制,输出表列) 例如:printf("i=%d,ch=%c/n",i,ch);说明:(1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两种信息: ①格式说明:由“%”和格式字符组成
  • C语言中printf格式控制的完整格式

    千次阅读 2013-02-26 16:59:41
    printf格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少。 ②-:有-表示左对齐输出,如省略表示右对齐输出。 ③0:有0表示指定空位...
  • 关于printf输出格式的总结

    千次阅读 多人点赞 2018-03-18 00:45:24
    基础的东西总是很容易忘 要时常总结回顾才能牢记 ... printf(“格式控制字符串”, 输出表列) 其中格式控制字符串用于指定输出格式格式控制串可由格式字符串和非格式字符串两种组成。格式字符
  • 51单片机的printf格式输出函数

    千次阅读 2018-11-22 01:01:14
    在51单片机上使用printf函数、sprintf函数要注意以下几点: 无符号16位数格式符用%d或者%u,千万不能加字母“l”,...32位数据格式符必须加字母“l”,否则会出错 8位数据格式符要加字母“b”,例如%bd、%bu等 ...
  • C语言的printf输出格式控制

    千次阅读 2018-07-20 10:45:12
    C语言的printf输出格式控制 printf大家都耳熟能详,但是能真正将其用法弄透的估计很少见。转一篇,改天整理。 1.转换说明符 %a(%A)浮点数、十六进制数字和p-(P-)记数法(C99) %c字符 %d有符号十进制整数 %f...
  • 关于printf输出格式类型的总结

    千次阅读 2016-03-10 22:33:39
    一、函数调用形式 ...格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如: “%d”表示按十进制整型输出; “%ld”表示按十进制长整型输出; “%c”表示
  • printf 输出格式控制专题

    千次阅读 2012-09-22 11:12:00
    Turbo C2.0 标准库提供了两个控制台格式化输入、 输出函数printf( ) 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。  printf()函数用来向标准输出设备(屏幕)写数据; scanf() 函数...
  • printf 输出格式、域宽

    千次阅读 2019-07-24 18:06:40
    函数原型:int printf("格式控制串",输出表); 返回值:成功则返回输出的字节数(按终端统计) 格式控制符: %d ---- 有符号的十进制整型数 %u ---- 无符号的十进制整型数 %hd --- short %ld --- long %...
  • printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为: printf(“<格式化字符串>”, <参量表>);其中格式化字符串包括两部分内容:一部分是正常字符, 这些字符将按原样...
  • C语言printf输出格式总结

    千次阅读 多人点赞 2019-04-17 17:43:56
    格式化规定符: %d 十进制有符号整数  %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数   %x  %X 无符号以十六进制表示的整数 %0 无符号以八进制表示的整数   ...
  • printf()函数输出数据格式汇总

    千次阅读 2020-03-06 17:12:42
    总结几个常用的printf输出数据格式: 1、整型: %d,十进制整型;------->有符号的十进制整型 %ld,十进制长整型; %3d,位数为3,不足在左边补空格; %-3d,位数为3,不足在右边补空格;(-可以理解为非,默认是在左边...
  • C语言 printf数据输出小数转换

    千次阅读 2020-01-31 22:58:58
    使用printf输出小数 标准模板为 % [标志] [数字] .[数字].[类型] 类型为数字的数据类型 比如 int float double等 标志 包括 -+空格 # ;分别表示 左对齐 右对齐 ,空格表示;输出数据为正时带空格 ,输出数据为负时...
  • printf格式控制字符串

    千次阅读 2015-09-23 10:09:57
    printf(“格式控制字符串”, 输出表列) 其中格式控制字符串用于指定输出格式格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、...
  • printf格式控制的完整格式

    千次阅读 2009-02-27 21:27:00
    printf格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少。 ②-:有-表示左对齐输出,如省略表示右对齐输出。 ③0:有0表示指定空位...
  • printf函数输出格式: 语法: #include int printf( const char *format, ... ); printf()函数根据 format (格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中. 字符串 format (格式)由两类项目组成 - ...
  • C语言printf函数格式化打印之长整型

    万次阅读 2015-12-22 15:18:36
    有符号长整型 printf("recv %ld bytes audio data!\n", len); 无符号长整型 printf("recv %lu bytes audio data!\n", len); 跟整型相比,就是在前面加个l

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,027,265
精华内容 410,906
关键字:

printf数据格式