发布日期:2015-12-30 09:07 来源: 标签: 编程语言 C教程 C语言printf() C语言scanf()
本章我们主要学习printf()与scanf()在C语言中的使用(以下输入输出库函数的操作主要在标准输入输出设备(键盘和屏幕)与数据缓冲区之间进行),下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
printf()与scanf()
printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。
注意宽度输出和精度输出控制
scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。
1、格式说明符个数与输入数据个数不相等的情况:
当我们从键盘输入数据时,数据之间必须用分隔符分开(空格、Tab键、回车)。并且要求scanf函数中格式说明符的个数与数据列表中数据的个数相等。如:
scanf("%d%d", &a, &b);
scanf("%d%d%d", &a, &b, &c);
如果出现不相等的情况,我们应该怎么分析呢?
其实,当我们输入数据时,只要没有按回车键,所输入的数据都还存放在缓冲区,并没有存入变量中。按【Enter】键后,scanf()函数才会从缓冲区中取走数据。缓冲区是一个先进先出的队列,即取走数据的时候,遵循先输入的数据先取走的原则。scanf函数的格式说明符有几个就要取几次数据,只要碰到格式说明符就必须把数据取走,至于是不是要把取走的数据存放起来,就得看数据列表中的数据个数。没取完的数据继续留在缓冲区中。
以下是缓冲区示意图,它像一根管道,有一个入口和一个出口,数据只能从入口中存入,只能从出口中取出。

以下是针对该图的C程序,数据输入为:10<空格>20<空格>30<空格>40<回车>
/*
 * 输入数据格式:10<空格>20<空格>30<空格>40<回车>
 * 输出:a=10 b=20
         c=30
 */
#include <stdio.h>
int main()
{
    int a, b, c;
    scanf("%d%d", &a, &b); /* scanf中有2个格式说明符,表明要取两次数据,取走10和20缓冲区中还剩下30和40 */
    printf("a=%d b=%d \n", a, b);
    scanf("%d", &c); /* scanf中只有1个格式说明符,表明要取1次数据,取走30                               缓冲区中还剩下40,因此,读者还可以取一次。。。。。*/
    printf("c=%d \n", c);
    return 0;
}
2、宽度输出的情况:
(1) 在%和格式字符之间加入一个整数来控制输出数据所占宽度
printf("%d\n", 365);
printf("%2d\n", 365);
printf("%5d\n", 365);
printf("%f\n", 3.14);
printf("%6f\n", 3.14);
printf("%12f\n", 3.14);
输出效果:

(2) 在%和格式字符f之间加入一个“整数1. 整数2”来控制输出数据的格式
整数1:整个输出数据占的总宽度
整数2:输出实数的小数部分的个数
记住:先用整数2处理小数部分,再用整数1处理整个数据,包括已处理好的小数部分
printf("%3.3f\n", 3.1415);
printf("%3.5f\n", 3.1415);
printf("%9.5f\n", 3.1415);
printf("%9.0f\n", 3.1415);
输出效果:

3、宽度输入的情况:
宽度输入指的是在%和格式说明符d之间加入一个整数。如:scanf("%2d", &x);
规则:
(1) 注意:%d与%1d是不同的
(2) 当宽度小于数据的实际宽度时,截取指定宽度的部分作为一个数进入缓冲区,再将剩余部分作为另一个数放入缓冲区。
基于以下程序进行测试,测试结果如下:
#include <stdio.h>
main()
{
    int a;
    float b,c;
    scanf("%3d%f%f",&a,&b,&c);
    printf("%d %f %f \n", a, b, c);
}
test case #1:
输入:1<空格>2<空格>3<回车>
输出:1 2.000000 3.000000
test case #2:
输入:123<空格>4<空格>5.1234567<回车>
输出:123 4.000000 5.123456
test case #3:
输入:1234<空格>5<空格>6<回车>
输出:123 4.000000 5.000000
test case #4:
输入:1.23<空格>4<空格>5<回车>
输出:1 0.230000 4.000000
test case #5:
输入:123.45<空格>6<空格>7<回车>
输出:123 0.450000 6.000000
test case #6:
输入:1234.5<空格>6<空格>7<回车>
输出:123 4.500000 6.000000

相关评论

专题信息
    C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。