参考文章:
http://blog.sina.com.cn/s/blog_784f40b80100psg9.html
C语言输入输出函数分为两类:
1、格式化输入输出函数
2、非格式化输入输出
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1、格式化输入输出
格式化输入输出就是我们常说的printf()和scanf()函数,这两个函数可以向标准的输入输出设备读写不同格式的数据。
1.1 printf()函数
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。它的调用格式有两种:
1、printf("正常字符转换字符");
2、printf(“格式化字符串转换字符”, 参量表);
其中格式化字符串包含两部分,一是正常字符,这些字符按照原样输出,例如:printf("hello world ");
二是格式化规定字符,这部分以"%"开始,后面跟一个或者多个规定字符,用来确定输出内容的格式。
在这样的格式化字符串的后面有一个参量表。参量表是需要输出的一系列参数。其个数必须与格式化字符串所说明的输出参数个数一样多,各个参数之间用","隔开,且顺序是一一对应的。
例如:printf("%d",i);
格式化字符串通常的格式如下:
%[修饰符]转换说明符
我们常用的修饰符有标志修饰符、精度修饰符、长度修饰符和宽度修饰符。通过这些修饰符我们可以编写更加整齐美观的数据输出形式。
转换说明符
━━━━━━━━━━━━━━━━━━━━━━━━━━
符号 作用
——————————————————————————
%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
━━━━━━━━━━━━━━━━━━━━━━━━━━
长度修饰符
━━━━━━━━━━━━━━━━━━━━━━━━━━
符号 作用
——————————————————————————
l 长整型量输出
h 短整型量输出
━━━━━━━━━━━━━━━━━━━━━━━━━━
长度修饰符可以和d,u和f等转换说明符一起使用。例如%ld 表示长整型数据的输出。
宽度和精度修饰符
━━━━━━━━━━━━━━━━━━━━━━━━━━
符号 作用
——————————————————————————
md 以宽度m输出整型数,不足m位数时左侧补以空格
0md 以宽度m输出整型数,不足m位数时左侧补以0
m.nf 以宽度m输出实数,n为小数位数
ms 以宽度m输出字符串,不足m位时左侧补以空格
m.ns 以宽度m输出字符串左侧n个字符,不足m位时左侧补以空格
━━━━━━━━━━━━━━━━━━━━━━━━━━
标志修饰符
在printf函数常常用标志修饰符控制输出格式,常见的标志修饰符如下
━━━━━━━━━━━━━━━━━━━━━━━━━━
符号 作用
——————————————————————————
- “左对齐方式”:输出数据左对齐,右侧补空格。
缺省时,输出数据是右对齐,左侧补空格
+ 输出数据是正数时候,在数据之前显式一个+号,
输出数据是负数时候,在数据之前显式一个-号。
# 输出数据是八进制数据时,在前面加0,
是十六进制数据时,在前面加0x
空格 输出数据是正数时候,在数据前面打印空格,
是负值时,在数据前面打印-号
━━━━━━━━━━━━━━━━━━━━━━━━━━
转换字符
在格式化规定符之后通常会有一些""开头的转换字符,常见的转换字符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━
字符 作用
——————————————————————————
换行
f 清屏并换页
回车
Tab符
xhh 表示一个ASCII码用16进表示,
其中hh是1到2个16进制数
━━━━━━━━━━━━━━━━━━━━━━━━━━
1.2 scanf()函数
scanf()函数是格式化输入函数, 它从标准输入设备(键盘) 读取输入的信息。
其调用格式为:
scanf(“格式化字符串”, 地址表);
格式化字符串包括以下三类不同的字符;
1. 格式化说明符: 格式化说明符与printf()函数中的格式说明符基本相同。
2. 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符
3. 非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
地址表是需要读入的所有变量的地址, 而不是变量本身。这与printf()函数完全不同, 要特别注意。各个变量的地址之间同“,”分开。
常见的输入列表如下:
scanf(“%d, %d”, &i, &j);
2、非格式化输入输出函数
非格式化输入输出函数可以由上面讲述的标准格式化输入输出函数代替, 但这些函数编译后代码少, 相对占用内存也小, 从而提高了速度, 同时使用也比较方便。
2.1 putchar()函数
putchar()是对单个字符进行输出的函数。它的功能是将字符输出到标准输出设备,每次只能输出一个字符。
常用格式为:putchar(输出项) 例子如下:
char k = "K";
putchar(k);
putchar('K');
2.2 getchar()函数
getchar()是对单个字符进行输入的函数。它的功能是从标准输入设备输入一个且只能是一个字符,并将该字符返回为getchar()的值。
其一般格式为:getchar() 例子如下:
char ch;
ch = getchar();
2.3 puts函数
puts()函数的功能是将字符串输出到屏幕上,输出后将自动回车换行。调用格式为:
puts(s);//其中s为字符串数组名或者字符串指针
2.4 gets()函数
gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串,其调用格式为:
get(s) ;//其中s为字符串数组名或者字符串指针