正文

printf()用法 2006-07-23 14:21:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/fred/16760.html

分享到:

printf()用法
函数名
: printf
  : 产生格式化输出的函数

  
: int printf(char *format...);
程序例
:

#include <stdio.h>
#include <string.h>

#define I 555
#define R 5.5

int main(void)
{
   int i,j,k,l;
   char buf[7];
   char *prefix = buf;
   char tp[20];
   printf("prefix  6d      6o      8x        10.2e        "
          "10.2f\n");
   strcpy(prefix,"%");
   for (i = 0; i < 2; i++)
   {
      for (j = 0; j < 2; j++)
         for (k = 0; k < 2; k++)
     for (l = 0; l < 2; l++)
            {
               if (i==0)  strcat(prefix,"-");
               if (j==0)  strcat(prefix,"+");
               if (k==0)  strcat(prefix,"#");
               if (l==0)  strcat(prefix,"0");
               printf("%5s |",prefix);
               strcpy(tp,prefix);
               strcat(tp,"6d |");
               printf(tp,I);
               strcpy(tp,"");
               strcpy(tp,prefix);
               strcat(tp,"6o |");
               printf(tp,I);
               strcpy(tp,"");
               strcpy(tp,prefix);
               strcat(tp,"8x |");
               printf(tp,I);
               strcpy(tp,"");
               strcpy(tp,prefix);
        strcat(tp,"10.2e |");
        printf(tp,R);
        strcpy(tp,prefix);
        strcat(tp,"10.2f |");
        printf(tp,R);
        printf("  \n");
        strcpy(prefix,"%");
     }
       }
   return 0;
}
  

Turbo C2.0
标准库提供了两个控制台格式化输入、 输出函数printf( )

scanf(),
这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。

printf()
函数用来向标准输出设备(屏幕)写数据; scanf() 函数用来从标准输入

设备(键盘)上读数据。下面详细介绍这两个函数的用法。

    
一、printf()函数

    printf()
函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出

信息。在编写程序时经常会用到此函数。printf()函数的调用格式为
:
      printf("<
格式化字符串>", <参量表
>);
    
其中格式化字符串包括两部分内容: 一部分是正常字符,  这些字符将按原

样输出; 另一部分是格式化规定字符, "%"开始, 后跟一个或几个规定字符
,
用来确定输出内容格式。

    
参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出

参数个数一样多, 各参数之间用","分开, 且顺序一一对应,  否则将会出现意想

不到的错误。

    1.
格式化规定符

    Turbo C2.0
提供的格式化规定符如下
:
━━━━━━━━━━━━━━━━━━━━━━━━━━

   
符号                  作用

──────────────────────────
    %d              
十进制有符号整数

    %u              
十进制无符号整数

    %f              
浮点数

    %s              
字符串

    %c              
单个字符

    %p              
指针的值

    %e              
指数形式的浮点数

    %x, %X          
无符号以十六进制表示的整数

    %0              
无符号以八进制表示的整数

    %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.
一些特殊规定字符

━━━━━━━━━━━━━━━━━━━━━━━━━━
    
字符                           作用

──────────────────────────
     \n                   
换行

     \f                   
清屏并换页

     \r                   
回车

     \t                   Tab

     \xhh                 
表示一个ASCII码用16进表示
,
                          
其中hh1216进制数

━━━━━━━━━━━━━━━━━━━━━━━━━━
    
由本节所学的printf()函数, 并结合上一节学习的数据类型, 编制下面的程

, 以加深对Turbo C2.0数据类型的了解。

    
1
     #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;
     }
    
上面结果中的地址值在不同计算机上可能不同。

阅读(9436) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册