《第4章 常用标准库函数 清华大学版 孙承爱著 c语言》由会员分享,可在线阅读,更多相关《第4章 常用标准库函数 清华大学版 孙承爱著 c语言(75页珍藏版)》请在金锄头文库上搜索。
1、山东科技大学信息学院第4章 常用标准库函数1程序设计基础山东科技大学信息学院第4章 常用标准库函数4.1 输入输出函数 4.2 字符串操作函数 4.3 数学运算函数 4.4 图形操作函数 4.5 综合应用举例2程序设计基础山东科技大学信息学院库函数C编译系统为方便用户使用而提供的 已经编写好的公共函数 。ANSI 标准库函数大致分为以下几类:输入输出函数、数学函数、字符串函数、目录 函数、分类函数、诊断函数、时间日期函数、 其它函数。 在C语言中要使用库函数,应当使用编译预处理命 令“#include”把与该库函数相关的头文件包含进 来 注意3程序设计基础山东科技大学信息学院4.1 输入输出函
2、数1.字符输入输出函数 1) 字符输出函数putchar() 函数原型:int putchar(int c); 功能:向终端输出一个字符。 【说明】 (1)参数c可以是字符型变量、整型 变量、字符常量或整型常量(要求在0-255范围内 )。 (2)函数返回值为输出字符的ASCII 码值。 (3)putchar函数也可以输出转义字 符。4程序设计基础山东科技大学信息学院#include “stdio.h“ void main() char a,b,c; int i,j,k; a=s; putchar(a); putchar(n); /*换行*/ putchar(s); putchar(n); /
3、*换行*/ i=115; putchar(i); putchar(n); /*换行*/ putchar(115); putchar(10); /*换行*/ 【例4.1】体会字符输出函数的功能。5程序设计基础山东科技大学信息学院4.1 输入输出函数 1.字符输入输出函数2)字符输入函数 getchar() 函数原型:int getchar(void); 功能:从键盘输入中得到一个字符。【说明】 (1)函数返回值为输入字符的ASCII码值。 (2)getchar函数的值可以赋给一个字符变量 或整型变量,也可以不赋给任何变量。 (3)不同的字符输入方法对结果的影响不同 。 6程序设计基础山东科技大学
4、信息学院【例4.2】体会字符输入函数的功能。#include “stdio.h“ void main() char a,b,c; a=getchar(); b=getchar(); c=getchar() ; putchar(a); putchar(b); putchar(c); 若输入: sun 则输出: sun 若输入: sun 则输出: S u7程序设计基础山东科技大学信息学院2.格式输入输出函数 1)格式输出函数 printf() 函数原型:int printf(char *format,args,.) 功能:产生格式化输出,按format所 指格式将输出表列args的值输出到标准输出
5、设备 。 【说明】 (1)格式控制format,用于说明输出的数据 类型及格式。 (2)输出表列args是与格式控制中说明的控 制格式相对应的要输出的数据表。 (3)原则上,输出表列中变量的个数与类型 应与格式说明中指定的数据的个数和类型应一致,且从左到 右一一对应。 4.1 输入输出函数8程序设计基础山东科技大学信息学院常用printf函数格式字符见表4.1所示 格式 字符 意 义 d ,i按带符号十进制整数输出( 正数不输出符号) u 按无符号十进制整数输出 o 按无符号八进制整数输出( 不输出前导符o) x, X按无符号十六进制整数输出 (不输出前导符ox) c 按字符型输出,只输出一个
6、字 符 s 按字符串输出 f 按浮点型小数输出,隐含输 出6位小数 e, E 按科学计数法输出,数字部 分的小数部分为6位 g, G按 e 和 f 格式中较短的一 种输出 表4.1 printf函数格式字符printf函数格式字符9程序设计基础山东科技大学信息学院常用的修饰符如表4.2(其中w、n均代表一个正整数)。 表4.2 printf函数修饰符 修饰符 意 义 0 ww为输 出宽度,不足w时,左补零如:% 05d- ww为输 出宽度,不足w时,右补空格如:% -5d+ ww为输 出宽度,不足w时,左补空格如:% +5d#使八进制、十六进制输出带前导符:o、ox或oX。如:%#o、%#xw
7、,n w为输 出宽度,n为小数位数或输出的字符个数。不够规 定宽 度,左补空格,超过规 定宽度,按实际长 度输出。如:% 6.2f;%6.9s l 可加在格式字符d,u,o,x前面作前缀,输出 long或 double 型 时使用 ,如:% ld printf函数格式字符10程序设计基础山东科技大学信息学院printf函数格式字符对上述格式字符可进行如下分类: u整型格式:d(i),o,x,u u字符型格式:c u字符串格式:s ; u实型格式:f,e,g u修饰符:l,m,n,- 【注意】 (1)格式符最好用小写(除X,E,G外,都应 用小写) 。 (2)格式说明以“%”开头,以上述格式字符
8、 之一结束,中间可插入修饰符(l,w,n,-)。其它字符 照原样输出,也可使用“转义字符”。 (3)若想输出“%”,在“格式控制”中应使用 连续两个“%”,如printf(“%f%”,1.0/3)。 (4)不同的系统在格式输出时有些差异。11程序设计基础山东科技大学信息学院d格式 %d, %wd(%0wd) , %-wd,%ld (%wld,%0wld,%-wld) u格式%u, %wu , %0wu , %-wu , %lu , %wlu , %0wlu , %-wlu o格式 %o , %wo , %0wo , %#wo(加前导0) , %-wo , %-#wo(加前导0); %lo ,
9、%wlo , %0wlo , %#wlo (加前导0), %-wlo , %-#wlo (加前导0) x格式 %x , %wx , %0wx , %#wx(加前导0x) , %-mx , %-#wx(加前导0x) (含义 同d格式); %lx, %wlx, %0wlx, %#wlx (加前导0x), %-wlx, %-#wlx (加 前导0x) c格式 %c ,%wc ,%-wc (含义同d格式) s格式 %s ,%ws ,%-ws ,%w.ns ,%-w.ns (含义同d格式) f格式 %f , %w.nf , %-w.nf e格式%e , %w.ne,%0w.ne,%-w.ne , %E
10、g格式 %g ,%w.ng ,%0w.ng , %-w.ng 各种常用格式字符具体用法介绍: 12程序设计基础山东科技大学信息学院【例4.3】体会printf函数的功能。#include “stdio.h“ void main() int a=123,b=-3721; float x=123.456; printf(“a=%d,b=%dn“,a,b); printf(“a=%4d a=%04d a=%-4d n“,a,a,a); printf(“b=%7d b=%07d b=%-9d b=%2dn“,b,b,b,b); printf(“a=%8ld,b=%8ldn“,a,b); printf(
11、“a=%-8ld,b=%-8ldn“,a,b); printf(“%3s,%7.2s,%.4s,%-5.3sn“,“sun“, “sun“, “sun“, “sun“); printf(“%f,%e,%gn“,x,x,x); printf(“%10.3e,%010.1e,%012.5en“,x,x,x); 13程序设计基础山东科技大学信息学院4.1 输入输出函数2.格式输入输出函数 2)格式输入函数 scanf() 函数原型:int scanf(char*format,argument,.) 功能:执行格式化输入,从标准输入设备上按 format所指格式,输入数据给argument所指向的单元
12、。 【说明】 (1)格式控制format的含义同printf函数 (2)输入表列argument只能采用“地址表列” (3)在执行数据输入时,以一个或多个空格、或 回车键、或跳格键(Tab)作为分隔符。 (4)例中,“ char c; scanf(“%d“, scanf(“%c“, printf(“a=%d“,a); printf(“c=%c“,c); 18程序设计基础山东科技大学信息学院4.2 字符串操作函数1 字符串输出函数puts( )u函数原型: int puts(char *str)u功能:从str指定的地址开始,依次将存储单 元中的字符串输出到显示器,直至遇到字符串结束标 志为止。
13、 【说明】若成功,返回换行符;若失败,返 回EOF。 【注意】 (1)若字符串中包含转义字符,则按转义后的 结果输出。 (2)输出时自动把0转换为n后输出(自动 换行)。19程序设计基础山东科技大学信息学院【例4.5】体会字符串输出函数的功能。# include “stdio.h“ void main() char s =“goodnsuntday“;puts(s); 20程序设计基础山东科技大学信息学院4.2 字符串操作函数2 字符串输入函数gets( ) u函数原型:char *gets(char *str)u功能: 从键盘输入一个字符串(该字符串中可以包含空 格),直至遇到回车符为止,并
14、将该字符串存放到由str所指定 的数组中(或内存区域)。 【说明】 (1)输入字符串时以换行符作为分隔符(空格是有效 输入)。 (2)输入时自动把n转换为0后存于字符串的尾部 。 (3)参数str为字符串中第一个字符的存放地址,通常 为字符数组名,也可以是第8章将要介绍的字符型指针变量。21程序设计基础山东科技大学信息学院【例4.6】体会字符串输入函数的功能。# include “stdio.h“ void main() int i; char s10; gets(s); puts(s); 22程序设计基础山东科技大学信息学院4.2 字符串操作函数3 字符串连接函数strcat( )u函数原型
15、:char *strcat(char * str1, char * str2)u功能:将以str2为首地址的字符串连接到str1串的后面 ,且从str1串的0所在单元连接起,即自动覆盖了str1串的结 束标志0。 【说明】 (1)参数str2既可以为字符数组名、指向字符数组的 指针变量,也可以为字符串常量。 (2)str1必须有足够的空间来存储连接结果,以确保 两个字符串连接后不出现超界现象。 (3)连接时取消str1后的0,只在连接后的新串尾部 加0。 (4)该函数的返回值为str1串的首地址。23程序设计基础山东科技大学信息学院【例4.7】利用strcat函数实现字符串的连接。# incl
16、ude “string.h“ # include “stdio.h“ void main() char s115=“hello“,s210=“world“; strcat(s1,s2); puts(s1); puts(s2); strcat(s1,“good“); puts(s1); 24程序设计基础山东科技大学信息学院4.2 字符串操作函数4 字符串复制函数strcpy( )u函数原型:char *strcpy(char *str1, char *str2)u功能:将字符串str2复制到字符串str1后,返回指向str1 的指针。 【说明】 (1) 参数str2既可以为字符数组名、指向字符数组的指 针变量,也可以为字符串常量。 (2)str1串所在的字符数组要留有足够的空间