Linux 版 (精华区)
发信人: netiscpu (夜☆星光点点☆), 信区: Linux
标 题: ◇ 星星流讲座 0015
发信站: 紫 丁 香 (Sun Nov 8 18:27:25 1998), 转信
寄信人: guest.bbs@hgluo.hust.edu.cn
标 题: ◇ 星星流讲座 0015
发信站: 华南理工大学 BBS木棉站
日 期: Thu Feb 20 14:41:21 1997
发信人: ax.bbs@bbs.ee.nthu.edu.tw. (athena), 信区: test
标 题: 星星流讲座 0015
发信站: ☆清华电机☆ (Sun May 14 12:35:45 1995)
;35m第 3 讲 之 8 基本的输入与输出
Topic: Usage of scanf (2)m
scanf 的 Type 栏位其意义列表如下:
型态 意义
--------------------------------------------------
c 单一字元,在此格式下所有的空白字元
都不会被忽略,这是比较特殊的。
d 十进位有号整数。
e f g 有号浮点数,浮点数可以用科学记号的
方式由键盘输入,scanf 会自动把 e或
E 之後的数字当成次方数。
i 有号整数,可以是十进位、八进位 (以
0 开头) 或十六进位 (以 0x 开头)。
n 此非真正的读取格式,对应此格式的参
数必须为整数,它的内容是由键盘输入
的字元数目。
o 无号八进位数 (不管有无 0 开头均视
输入为八进位数)。
p 位址。
s 字串。
u 无号十进位数。
x 无号十六进位数 (不管有无 0x 开头均
视输入为十六进位数)。
% 无特别意义,只是要求输入 % 这个字
元。
scanf 的 Size 栏位是用来配合 Type 栏位使用的,它的意义列表
如下:
前置词 使用时机
--------------------------------------------------
h 当以 d、i、o、x、u 读取整数值时,
用以代表参数为短整数。
l 当以 d、i、o、x、u 读取整数值时,
用以代表参数为长整数。以 e、f、g
读取浮点数时则代表读取的数值型态
为 mdouble0m。long double
型态必须用大写的前置词 L 来指定。
Type 栏位另有两种比较罕用的用法,列表如下:
型态 意义
--------------------------------------------------
[...] 型态正比对 (pattern matching),它是
用来比对输入字串用的。
[^...] 型态反比对,见例子。
什麽叫做比对输入字串呢?请看□例程式:
/* match.c */
#include <stdio.h>
void main (void)
{
char s[10];
printf ("Input string: ");
scanf ("%[12345]", s);
printf ("%s\n", s);
}
执行结果:
Input string: m123ab40m
123
比对的意思就是找寻符合括号中字元集的最长字串,例如 123ab4 中
含有数字 1-5 的最长字串是 123。%[12345] 这个格式字串可以简写
成 %[1-5],请读者自己试试看。
那麽,什麽叫做反比对呢?以上面的例子而言,如果我们把 %[1-5]
改成 %[^1-5],那麽输入 123ab4 会得到 ab 这个输出,反比对的意
思就是不符合括号中字元集的最长字串。
对於 scanf 我们并不打算写一个完整的□例程式,没错,懒惰的作
者又要给各位实作的机会了,请你自己动手写写看你能不能用 scanf
读进所有型态的资料,再利用你上次写过的 printf 的程式里的方法
把它们一一印出来。
--
本文原作者为徐振家,原作刊载於星星神教总坛 ☆清华电机☆ test 板。
你可以以电子文件的形式将本文自由流传於台湾学术网路,但必须包含此版权声明。
原作者依中华民国著作权法之规定,享有本文之著作权,请勿抄袭以免触法。
未经授权任何人不得以任何形式对本文做任何修改及商业上之应用。
其他网路的转载或其他用途的应用,请先知会作者,并取得其同意。
对本文有任何疑问或意见请 mail 给 ax.bbs@bbs.ee.nthu.edu.tw,谢谢。
--
m;32m※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: mtlab.hit.edu.cn]
--
Enjoy Linux!
-----It's FREE!-----
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.270毫秒