📄 00000004.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: <A HREF="mailto:ax.bbs@bbs.ee.nthu.edu.tw.">ax.bbs@bbs.ee.nthu.edu.tw.</A> (athena), 信区: test <BR>标 题: 星星流讲座 0011 <BR>发信站: ☆清华电机☆ (Wed May 10 19:47:43 1995) <BR> <BR> <BR>第 3 讲 之 4 基本的输入与输出 <BR> Topic: Usage of printf (1) <BR> <BR>printf 是我们最常用的一个函数,它的功用是对资料做格式化,然後 <BR>把结果输出到萤幕上。printf 这个函数的函数原型放在 stdio.h 这个 <BR>标头档里,所以当我们要叫用 printf 这个函数之前,必须含入这个标 <BR>头档 #include <stdio.h>,这是因为函数在使用前必须经过宣告。 <BR> <BR>那麽,printf 的函数本体在那里呢?其实 printf 是标准函式库 ( <BR>standard library) 中的一个函数,标准函式库就是 C 语言标准中规 <BR>定每一个 C 语言编译器所必须提供的函数形成的集合,使用者只要含 <BR>入标准标头档 (standard header file),就可以叫用标准函式库中的 <BR>函数,前面提到过的连结器 ld 会自动地到函式库中去找寻 printf 的 <BR>函数本体。 <BR> <BR>printf 的格式很简单,它的基本使用法如下例: <BR> <BR> printf ("%d \n", i); <BR> □ □ <BR> 格式 替换变数 <BR> (format string) <BR> <BR>格式是一个字串,它指示 printf 应该如何地在萤幕上显示,如上例中 <BR>"%d \n" 就是指示 printf 印出一个整数,在整数的後面印出五个 <BR>空白,然後换行。以 % 开头的字 (word) 就是「变数列印格式」,它 <BR>基本上分为五个栏位: <BR> <BR> 欲列印变数的型态 <BR> □ <BR> %[Flags][Width][.Precision][Size][Type] <BR> □ ↑ □ □ <BR> 列印选择项 栏宽 浮点数精确度 欲代换变数的大小 <BR> <BR>栏宽为栏位宽度,例如 %8d 就表示列印一整数,但是最多只列印八个字 <BR>在萤幕上 (意即该整数超过八位的地方会被舍去)。 <BR> <BR>Type 为欲列印变数的型态,列表如下: <BR> <BR> Type 型态 输出格式 <BR> ------------------------------------------------------------ <BR> c char 单一字元 <BR> d int 有号的十进位数字 <BR> e float 或 double 以科学记号表示的有号数 <BR> 如:-1234567e+002 <BR> E float 或 double 以科学记号表示的有号数 <BR> 如:-1234567E+002 <BR> f float 或 double 列印浮点数,预设小数点後精度 6 位 <BR> g float 或 double 列印浮点数,预设小数点後精度 3 位 <BR> 不列印不必要的 0 和小数点 <BR> 指数次方小於 -4 或大於精确度栏位指 <BR> 定值时以科学记号型式输出 <BR> G float 或 double 同 g,但输出科学记号时以 G 代 E <BR> i int 有号的十进位数字 <BR> n int * printf 已列印的文字数目 <BR> o unsigned 无号八进位数 <BR> p void * 指标内含 <BR> s char * 字串 <BR> u unsigned int 无号十进位数 <BR> x unsigned 无号十六进位数,abcdef 小写 <BR> X unsigned 无号十六进位数,ABCDEF 大写 <BR> <BR>Flags 为列印选择项,列表如下: <BR> <BR> Flag 意义 预设值 <BR> ------------------------------------------------------------ <BR> - 向左对齐 向右对齐 <BR> + 不论正负数均列印正负号 只有负数才列印正负号 <BR> 空白 正数前加上空白 正数前不加空白 <BR> 0 数字前补 0 数字前不补 0 <BR> # 强迫列印 prefix 和 postfix 不强迫 <BR> <BR>请看下面的□例程式: <BR> <BR>/* printf1.c */ <BR>#include <stdio.h> <BR> <BR>void main (void) <BR>{ <BR> printf ("%8d\n%-8d\n", 1234, 1234); <BR> printf ("%+8d\n", 1234); <BR> printf ("% d\n", 1234); <BR> printf ("%08d\n", 1234); <BR> printf ("%x\n%#x\n", 0xc, 0xc); <BR>} <BR> <BR>执行结果: <BR> <BR> 1234 <BR>1234 <BR> +1234 <BR> 1234 <BR>00001234 <BR>c <BR>0xc <BR> <BR>这儿比较不易理解的是 # 这个 flag 的作用。例如像十六进位数,我们在 C 语 <BR>言中会在它的前面加上 0x,但是如果使用 printf ("%x", 0xc); 这样儿印出来 <BR>的话前面的 0x 这个前置词 (prefix) 就会被去掉了,如果要保留的话就得加上 <BR># 这个 flag。又如浮点数若恰巧为整数值,则小数点和其後面的 0 未必会被印 <BR>出来 (视厂商如何制作编译器),此时若加上 # 这个 flag 则小数点和其後面的 <BR>0 (也就是所谓的 postfix) 就会被列印出来。 <BR> <BR>-- <BR>本文原作者为徐振家,原作刊载於星星神教总坛 ☆清华电机☆ test 板。 <BR>你可以以电子文件的形式将本文自由流传於台湾学术网路,但必须包含此版权声明。 <BR>原作者依中华民国著作权法之规定,享有本文之著作权,请勿抄袭以免触法。 <BR>未经授权任何人不得以任何形式对本文做任何修改及商业上之应用。 <BR>其他网路的转载或其他用途的应用,请先知会作者,并取得其同意。 <BR>对本文有任何疑问或意见请 mail 给 <A HREF="mailto:ax.bbs@bbs.ee.nthu.edu.tw,谢谢。">ax.bbs@bbs.ee.nthu.edu.tw,谢谢。</A> <BR> <BR> <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -