C语言输入与输出函数详解

嵌入式技术

1368人已加入

描述

编写程序的目的是让计算机帮助人们进行计算或处理信息,无论是计算还是处理信息,程序都需要获取输入数据,对输入数据进行计算或处理后,将计算或处理结果输出给用户。

例如:编写一个计算三角形面积的程序,圆周率可以声明为常量PI,不需要用户输入,但圆的半径是变化的量,半径的值来自用户的输入。程序计算出圆的面积,需要将计算结果输出给用户。

输入和输出函数就是完成输入和输出功能的,函数是一段已经编写好的C代码,它完成确定的功能,可以把函数看成一个黑盒,我们不需要知道函数的代码实现,只需要明确函数的功能及调用方法就可以。如图2-7所示,函数也有输入和输出,函数可以被程序中的其它语句调用,而调用者可以把函数看成黑盒,不用考虑函数的内部结构和特性,只需传入参数(输入数据)和接收返回值(输出数据)就可以了。

关于函数的内容在后面的章节还会详细讲述。

程序

图 2-7函数外部结构

C语言把提供的所有函数都放到库里,程序需要调用库内的函数时,需要把库的头文件引入到代码文件。C语言的输入和输出函数属于C语言的标准库函数,标准库函数的头文件是“stdio.h”,如果在程序里要使用输入输出函数,需要在代码的前面添加下面的语句:

#include

这条语句的作用是通知编译器,在该代码文件中使用了C标准库里的输入输出函数,要求编译器正确处理这些函数的使用。

输出函数

C语言标准输出函数名称为printf(),该函数的功能是把要输出的内容按照指定的格式输出到控制台,控制台是一个命令行窗口,没有程序界面,主要是为兼容DOS程序而设立的窗口。

printf()函数的一般形式为:

printf(“格式描述串”,变量列表)

printf()函数需要传入两个参数,分别是“格式描述串”和变量列表。

第一个参数说明采用什么样的格式输出内容,它的数据类型是一个字符串(字符串是有限个字符的有序集合,在C语言中使用双引号括起来,关于字符串的内容后面章节会详细讲述)。在格式描述串里可以有多个占位符,占位符在字符串的位置可以随意。需要注意格式描述串里的占位符和变量列表的变量是一一对应的,格式描述串里有多少个占位符,变量列表里面就有多少个变量对应。

例如下面的语句:

double dTemp = 129.6789603;
printf("%s:%.2fn", "这是用printf函数输出的数据",dTemp);

printf()函数的第一个参数“%s:%.2f”是格式描述串,其中“%s”是格式控制符,表示输出字符串,字符串内容取自格式字符串后面的变量列表,“%.2f”也是格式控制符,表示输出浮点数,并且保留2位有效小数,更改“%.”后面的数字,可以限制不同的小数位数输出,浮点数数值取自格式描述后面的变量列表。

变量列表跟在格式描述串后面,格式描述串中有多少个格式说明符,后面就有多少个变量,每个变量之间用逗号分隔。因为格式描述串“%s:%.2f”有两个格式说明符,因此在格式描述串后面应有两个变量,变量顺序与格式描述串中的格式说明符顺序保持一致,字符串常量"这是用printf输出的数据"对应格式控制符%s,变量dTemp对应格式控制符%.2f。

程序

图 2-8例句执行结果

从图2-8例句运行结果可以看出,printf方法可以控制浮点数小数位数的输出。

printf()函数常用格式控制符列表:

%c        单个字符 
%d        十进制整数 
%f        十进制浮点数 
%o        八进制数 
%s        字符串 
%u        无符号十进制数 
%x        十六进制数 
%%        输出百分号%

printf()函数常用格式控制:

%0m.n格式字符

下面对组成格式控制符的各项加以说明:

% 格式说明的起始符号,不可缺少。

0 有0表示指定空位填0,如省略表示指定空位不填。

m.n m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度。用于设置输出浮点数的小数位数。未指定n时,隐含的精度为n=6位。例如:%.2f,m位默认位数,小数保留2位;%9.2f,意思是位数为9位,小数保留2位;%09.2f,意思是位数为9位,小数保留2位,位数不足的用0补齐。

例句如下:

char chTemp = 'a';
double dTemp = 129.6789603;
printf("%s:%09.2fn", "输出浮点型变量", dTemp);
printf("%s:%c:n十进制:%d:n十六进制:%xn", "输出字符型变量", chTemp, (int) chTemp, (int) chTemp);

例句的变量命名采用了匈牙利命名法,匈牙利命名法是一种编程时的命名规范,匈牙利命名法的基本原则是对每一变量的名称都要求有明确含义,变量的类型通过规定的前缀字母来识别。例如:ch表示字符型数据、sz表示字符串类型、d表示双精度浮点数等。

printf("%s:%09.2fn","输出浮点型变量",dTemp); ”语句中,第一个%s的内容来自于格式描述串后面的第一个字符串常量“输出浮点型变量”,%09.2f表示输出9位数浮点数,保留2位有效小数,位数不足的,前面用0填充,浮点数值内容来自于dTemp。

该语句也可以改写为下面的语句,效果是等同的:

printf("输出浮点型变量:%09.2fn",dTemp);

在输出字符型变量语句中,分别应用%c、 %d和%x将字符型变量按照字符、十进制数值和十六进制数值输出,其中(int)是将字符类型强制转换为int类型,其意义是将字符强制转换为数值输出。

例句执行结果如图2-9所示:

程序

图 2-9 程序例句输出结果

上面例句中的格式描述串包含了换行符“n”,“n”是一个转义字符,符号“”使后面字符表示意义发生了转义,“”后面的字符有特殊的含义。表列出了常用的转义序列。

表 2-2转义序列表

转义序列描述
'单引号
"双引号
?问号
反斜杠
a响铃
b退格
f换页
n换行
r回车
t水平制表符
v垂直制表符

输入函数

当程序需要从键盘获取用户的输入时,就可以通过scanf()函数类来获取用户的输入。当通过scanf()函数获取用户输入时,控制台会一直等待用户的输入,直到用户敲回车键,用户的一次输入过程才结束。

scanf()函数的一般形式为:

scanf(“格式描述串”,变量地址列表)

第一个参数的格式描述串,其形式与printf()函数中的类似,其中可以包含一个或几个转换字符串(同样以%开头)。这些转换字符串说明输入的形式和数据的转换方式。第二个参数是变量的地址列表,其书写形式是在变量名称前面添加“&”符号,该符号可以取出变量的地址,也称为地址运算符或取地址符,函数会把用户输入的内容存储到与该地址对应的变量中。

表 2-3常用转换字符串列表

转换字符串接收变量的类型输入类型
%dint整型十进制数
%ldlong长整型十进制数
%ffloat十进制数,可以是小数
%lfdouble十进制数,可以是小数

例句:

int n;
 double x;float y;
 scanf("%d %lf %f",&n,&x,&y);

在例句中,声明了整型变量n,双精度浮点变量x,单精度浮点变量y,声明的三个变量用于接收用户的输入。scanf函数把用户输入的数据按照指定的类型进行转换,并把转换结果顺序赋值给三个变量,若用户输入数据不符合要求,则输入失败。输入的数值之间应该通过空格、回车键或Tab键进行分割。

【例2-1】输入整数和小数并输出

程序清单 sample.c

#include
int main()
{
   // 声明整型变量,接收输入的整数
   int nTemp;
   // 声明双精度浮点变量,接收输入的小数
   double dTemp;
   // 接收用户的输入
   scanf("%d %lf",&nTemp,&dTemp);
   // 输出变量nTemp和dTemp的值
   printf("输入的整数为:%dn输入的小数为:%.2f",nTemp,dTemp);
   return 0;
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分