C语言提高实用教案

上传人:莉**** 文档编号:90178175 上传时间:2022-05-14 格式:PPT 页数:116 大小:2.09MB
收藏 版权申诉 举报 下载
C语言提高实用教案_第1页
第1页 / 共116页
C语言提高实用教案_第2页
第2页 / 共116页
C语言提高实用教案_第3页
第3页 / 共116页
资源描述:

《C语言提高实用教案》由会员分享,可在线阅读,更多相关《C语言提高实用教案(116页珍藏版)》请在装配图网上搜索。

1、1概述(i sh)1.1 基本数据类型、操作符、表达式 1.2 语句 1.3 数组1.4 指针1.5 结构和联合体1.6 函数1.7 存储类型1.8 预编译1.9 有缓冲方式的文件(wnjin)操作及控制台操作1.10 其它库函数操作第1页/共115页第一页,共116页。21.1 基本(jbn)数据类型、操作符、表达式 在C语言中,变量的声明(shngmng)格式是: 类型 变量; 例: int x = 5; sizeof(int)&xx=5图图1.1 1.1 变量变量x x内存解释内存解释 第2页/共115页第二页,共116页。31.1 基本(jbn)数据类型、操作符、表达式数据类型数据类型

2、构造类型构造类型指针类型指针类型空类型空类型基本类型基本类型字符类型字符类型整型整型枚举类型枚举类型单精度类型单精度类型实型实型双精度类型双精度类型数组类型数组类型结构类型结构类型共同体类型共同体类型第3页/共115页第三页,共116页。41.1 基本(jbn)数据类型、操作符、表达式类型类型含义含义大小大小实例实例常量常量int整型整型sizeof(int)int i;100, 0 x100,0100short intshort短整型短整型2short s;(short)100long intlong长整型长整型 4long l;100L, (long)100float单精度类型单精度类型4

3、float x;0.1fdouble long double双精度类型双精度类型8double d;0.1,0.1dchar字符型字符型1char c;100, 0, 0, a, n第4页/共115页第四页,共116页。51.1 基本(jbn)数据类型、操作符、表达式 unsigned、signed修饰 十六进制、十进制、八进制表示 字符常量表示及编码 转义符(0,n,t等) 逻辑类型(lixng)的规定第5页/共115页第五页,共116页。61.1 基本(jbn)数据类型、操作符、表达式1.1.2 操作符、表达操作符、表达式式1算术操作符算术操作符 算术操作符含义实例+算术加法4.0+7,4

4、+7-算术减法7-5,7-5.0*算术乘法7*67,7*67.0/算术除法5/6,5.0/6%模运算:整除取余数17%7第6页/共115页第六页,共116页。71.1 基本(jbn)数据类型、操作符、表达式1.1.2 操作符、表达操作符、表达式式 2.关系关系(gun x)操作操作符符 关系操作符 含义实例小于xy=小于等于x大于xy=大于等于x=y=相等x=y!=不等x!=y第7页/共115页第七页,共116页。81.1 基本(jbn)数据类型、操作符、表达式 1.1.2 操作符、表达式 2.关系(gun x)操作符 “x y 右移操作 92 ,结果为2 ,相当于9/22左移操作 92,结果

5、为36,相当于9*22第11页/共115页第十一页,共116页。121.1 基本(jbn)数据类型、操作符、表达式 1.1.2 操作符、表达式 5移位操作符 例:我们可以(ky)将x的第3至第7位置为y。 int x=0 x44444444; int y=7; x=(x&0 xffffff07)|(y3; printf(n%x,y);第13页/共115页第十三页,共116页。141.1 基本(jbn)数据类型、操作符、表达式 1.1.2 操作符、表达式 6条件表达式操作符 “? :” 表达式 例:计算y年的天数:若y是闰年,则366天,否则(fuz)365天。用C表达如下: isLeap(y)

6、?366:365第14页/共115页第十四页,共116页。151.1 基本(jbn)数据类型、操作符、表达式1.1.2 操作符、表达操作符、表达式式 7. 赋值操作符赋值操作符 =+=-=*=/=%=&=|=第15页/共115页第十五页,共116页。161.1 基本(jbn)数据类型、操作符、表达式1.1.2 操作符、表达式操作符、表达式 7. 赋值操作符赋值操作符应用形式为:应用形式为:左值左值 赋值操作符赋值操作符 表达式表达式例:例: x%=7意义是计算意义是计算 “x%7” 的结果,送给的结果,送给 x 空间,其空间,其值是最后值是最后 x 的值。的值。注意:无分号。有分号时是语句注意

7、:无分号。有分号时是语句(yj)。“x=y=6” 表达正确吗?表达正确吗?第16页/共115页第十六页,共116页。171.1 基本(jbn)数据类型、操作符、表达式 1.1.2 操作符、表达式 8逗号(duho)表达式 逗号(duho)表达式的形式如下: 表达式, 表达式,表达式 例: char c=100; printf(%i,(c+1,c+2,c+3);第17页/共115页第十七页,共116页。181.2 语句(yj) 赋值语句(yj) 文法 赋值表达式; x+; +x; x-; -x;第18页/共115页第十八页,共116页。191.2 语句(yj)赋值语句(yj)自加(减)赋值x+;

8、+x;x-;-x;例:例:int x=5;int x=5;int y;int y;y=x+;y=x+;printf(nx=%d,y=%d,x,y);printf(nx=%d,y=%d,x,y);x=5;x=5;y=+x;y=+x;printf(nx=%d,y=%d,x,y);printf(nx=%d,y=%d,x,y);求值加1赋值x+先后+x后先第19页/共115页第十九页,共116页。201.2 语句(yj) 条件(tiojin)语句 文法 if ( E )S 或 if ( E )S1 elseS2判 定 条 件真语 句 1假图1.2 分支语句流程图判 定 条 件真语 句 1语 句 2假图

9、1.3 分支语句流程图第20页/共115页第二十页,共116页。211.2 语句(yj) 复合语句(yj) 文法 说明部分 语句(yj)部分 复合语句(yj)书写规范第21页/共115页第二十一页,共116页。221.2 语句(yj) 循环(xnhun)语句 while语句 for语句 do-while语句第22页/共115页第二十二页,共116页。231.2 语句(yj) 循环(xnhun)语句 while语句 while( E )S循环条件语句真假图1.4 while循环的流程图第23页/共115页第二十三页,共116页。241.2 语句(yj) 循环(xnhun)语句 while语句 i

10、nt getSum(int m) int sum=0; int i=1; while(iy); x+; y-;例:for(i=0;i10;i+); .第29页/共115页第二十九页,共116页。301.2 语句(yj) goto 语句 文法(wnf) goto 标号;第30页/共115页第三十页,共116页。311.2 语句(yj) switch 语句(yj) 文法 switch(表达式) case I1: S11 S12 S13 case l2: S21 S22 S23 default:S01 S02 S03 第31页/共115页第三十一页,共116页。321.2 语句(yj) switch

11、 语句(yj) int k=1;char c=A;do switch(c+)case A: k*=2; break;case B: k+=2;continue;case C: k%=3;default: k+;case D: k/=3; k+;while(c= 2000) for (i = 2000; i y; i+) sum += getYearDays(i); return (sum + 6) % 7; else for (i = y; i 2000; i+) sum += getYearDays(i); return ( -sum + 6) % 7; 第37页/共115页第三十七页,共1

12、16页。38综合(zngh)训练S2 计算(j sun)y年m月第一天的星期;int getMonthWeekDay(int y, int m) int sum = 0; int i; for (i = 1; i m; i+) sum += getMonthDays(y, i); return (getYearWeekDay(y) + sum ) % 7;第38页/共115页第三十八页,共116页。39综合(zngh)训练S3 打印(d yn)y年的日历:对y年的每一月,执行打印(d yn)操作。void printYear(int y) int i; count=1; for(i=1;i=1

13、2;i+) printMonth(y,i); 第39页/共115页第三十九页,共116页。40void printMonth(int y, int m) int i=0; int w; printf(n* %d月 *n,m); w = getMonthWeekDay(y, m); if(w=0) printf(n%-7d,count); count+; else printf( ); for (i = 0; i w; i+) printf( ); for (i = 1; i = getMonthDays(y, m); i+) printf( %7i, i); w+; w %= 7; if (w

14、 = 0 & igetMonthDays(y,m) printf(n%-7d,count); count+; 第40页/共115页第四十页,共116页。411.3 数组 一维数组 一维数组的声明(shngmng)形式是: 类型 数组变量数组长度; 如:int a 10 ;a+1a 9 1 a+910*sizeof(int) 0 图1.9 int a10声明的内存图示&a+1a a是缓冲区的开始是缓冲区的开始(kish)(kish)地址,是常地址,是常地址。地址。第41页/共115页第四十一页,共116页。421.3 数组一维数组&a+1:表示下一个a10空间(kngjin)的地址;a+1:表示

15、下一个整数空间(kngjin)的地址。类型类型地址地址大小大小a aint 10int 10a(a(等于等于&a&a,但类型,但类型不同不同) )1010* *sizeof(int)sizeof(int)aiaiintinta+i(a+i(等价于等价于&ai)&ai)sizeof(int)sizeof(int)第42页/共115页第四十二页,共116页。431.3 数组 一维数组 运算符 地址表达式 例:若有声明(shngmng)int x,a10,从文法上,下式都是正确的。a-1a100(&a3)-2(&x)0第43页/共115页第四十三页,共116页。441.3 数组 二维数组 二维数组的

16、说明形式(xngsh)如下: 类型 数组变量名长度1长度2;第44页/共115页第四十四页,共116页。451.3 数组 二维数组如:int aa23;图1-10 int a23声明的内存图示aa+1aa 1 1 0 0 0 1 aa1+12*3*sizeof(int)aa1+2 0 2 1 0 1 2 aa0+1&aa+1aa0+2第45页/共115页第四十五页,共116页。461.3 数组二维数组类型地址大小aaint 23 aa(等于&aa)2*3*sizeof(int)aaiint3aa+i(等价于&aai)3*sizeof(int)aaij intaai+j(等价于&aaij)siz

17、eof(int)第46页/共115页第四十六页,共116页。471.3 数组多维数组int aaa234;类型地址大小aaaint 234aaa(等于&aaa)2*3*4*sizeof(int)aaaiint34aaa+i(等价于&aaai)3*4*sizeof(int)aaaijint4aaai+j(等价于&aaaij)4*sizeof(int)aaaijk intaaaij+k(等价于&aaaijk)sizeof(int)第47页/共115页第四十七页,共116页。481.4 指针(zhzhn) 指针(zhzhn) 指针(zhzhn)的声明形式是: 类型 * 指针(zhzhn)变量; 例如

18、: int * p;sizeof(int *)&pp: int *图1.11 指针变量内存空间第48页/共115页第四十八页,共116页。491.4 指针(zhzhn)指针*p表示(biosh)p所指空间的内容含义类型地址大小p指针变量int *&psizeof(int *)*p所指的内存单元的内容intpsizeof(int)第49页/共115页第四十九页,共116页。501.4 指针(zhzhn) 指针(zhzhn) 例: int x=0; int *p; p=&x; *p=6; printf(“nx=%d”,x);图1.12 指针变量引用整型变量空间p: int *sizeof(int)

19、p&xx*p=6第50页/共115页第五十页,共116页。511.4 指针(zhzhn) 指针(zhzhn) 例: int a10; int *p; p=a;pa图1.13 指针变量引用数组变量空间p: int * 9 0 *p 1 10*sizeof(int)p+9p+1第51页/共115页第五十一页,共116页。521.4 指针(zhzhn)指针(zhzhn)“*” 和 “&”是运算符形式类型变化意义实例int *p;*地址 在地址类型基础上减一个*求地址空间中的内容*p: int&左值表达式或&数组变量 在原类型的基础上加一个*求地址&p: int * 第52页/共115页第五十二页,共

20、116页。531.4 指针(zhzhn)指针(zhzhn)-注意类型例:int i;long l=0 xf1f2f3f4;char c4;for(i=0;i=2)y=atoi(*(argv+1);if(argc=3)m=atoi(*(argv+2);printMonth(y,m);elseprintYear(y);return 1;第56页/共115页第五十六页,共116页。571.4 指针(zhzhn)例:命令行参数例:命令行参数(cnsh)的获取的获取图图1.18 argv1.18 argv内存示意图内存示意图*argvMyDate020100*(argv+1)20*(argv+2)cha

21、r *char *argvargv:char *argv+1char *argv+2第57页/共115页第五十七页,共116页。581.4 指针(zhzhn) 字符串 C语言中的字符串实质(shzh)上是这个缓冲区的首地址。 一个字符串,它是自标志的,字符串的结束是以0标志的。 常字符串,如 “hello” hello0hello图1.16 字符串常量的内存图示第58页/共115页第五十八页,共116页。591.4 指针(zhzhn) 字符串操作(cozu)-拷贝 char * strcpy(char * s1,char * s2) int i; for(i=0;*(s2+i)!=0;i+)

22、*(s1+i)=*(s2+i); *(s1+i)=0; return s1; 第59页/共115页第五十九页,共116页。601.4 指针(zhzhn)字符串操作(cozu)-连接char * strcat(char * s1,char * s2) int i, j; for(j=0;*(s1+j)!= 0;j+); for(i=0;*(s2+i)!=0;i+) *(s1+j+i)=*(s2+i); *(s1+j+i)=0; return s1;第60页/共115页第六十页,共116页。611.4 指针(zhzhn) 字符串操作(cozu)-比较 int strcmp(char * s1,ch

23、ar * s2) int i; for(i=0;*(s1+i)!= 0 & *(s2+i)!=0 & *(s1+i)=*(s2+i) ;i+); return *(s1+i)-*(s2+i); 第61页/共115页第六十一页,共116页。621.4 指针(zhzhn) 字符串操作(cozu)-计算长度 int strlen(char * s1) int i; for(i=0;*(s1+i)!= 0 ;i+); return i; 第62页/共115页第六十二页,共116页。631.4 指针(zhzhn)考虑下面(xi mian)代码的执行结果:char str25;strcpy(str0,he

24、llo);strcpy(str1,hi);第63页/共115页第六十三页,共116页。641.4 指针(zhzhn) 指针数组 int * pInt8; char * str= “请输入(shr)整数”, “x=%d”, “除法错误” ;第64页/共115页第六十四页,共116页。651.4 指针(zhzhn) 数组指针(zhzhn) int * pList4; int (* pItem)4;sizeof(int *4)&pItempItem:int(*)40:int *1:int *2:int *3:int *pList图1.19指针数组与数组指针内存图示第65页/共115页第六十五页,共1

25、16页。661.4 指针(zhzhn) 数组指针(zhzhn) int getTotal(int (* item)4)int i;int sum=0;for(i=0;i4;i+)sum+=*(*item+i);return sum; 第66页/共115页第六十六页,共116页。671.4 指针(zhzhn) 数组指针(zhzhn) int main() int i; int items44=1,3,4,5,2,4,5,3,5,6,3,2,6,4,3,1; for(i=0;iname*pStu struct stupStusizeof(struct stu)(*pStu).name第72页/共1

26、15页第七十二页,共116页。731.5 结构(jigu)和联合体 联合体 union 联合体名类型(lixng) 域变量;类型(lixng) 域变量; ;第73页/共115页第七十三页,共116页。741.5 结构(jigu)和联合体 联合体union tag struct int w,h; rect; int r; int d; ;union tag shape;图1.22 联合变量shape的内存结构图示&shaperect.wR, drect.hsizeof(int)sizeof(int)&shape+1第74页/共115页第七十四页,共116页。751.5 结构(jigu)和联合体

27、联合体union iaddr unsigned long ip; unsigned char byte4; ;sizeof(union iaddr)=4。第75页/共115页第七十五页,共116页。761.5 结构(jigu)和联合体 位域struct unsigned int f1:3; unsigned int f2:3; unsigned int f3:3;q;&q 图图1.23 1.23 位域内存图示位域内存图示 f3 f3 f1f2f2第76页/共115页第七十六页,共116页。771.5 结构(jigu)和联合体 链表结点的定义(dngy) typedef struct stagi

28、nt key;struct stag *next; SNODE; /单向链表结点的定义(dngy) typedef struct dtagint key;struct dtag *previous,*next; D N O D E ; / / 双 向 链 表 结 点 的 定 义(dngy)第77页/共115页第七十七页,共116页。781.5 结构(jigu)和联合体 链表结点(ji din)的操作 void insertAtHead(SNODE * head,SNODE *); SNODE * createSNode(int key); void deleteAtTail(SNODE * h

29、ead); void traversal(SNODE * head); 第78页/共115页第七十八页,共116页。791.5 结构(jigu)和联合体 二叉树结点(ji din)的定义 typedef struct t2Tag int key;struct t2Tag * left,*right; T2NODE;第79页/共115页第七十九页,共116页。801.5 结构(jigu)和联合体 树结点(ji din)的定义 typedef struct tTag int key; struct tTag * parent;struct tTag *elderBrother,*brother;

30、struct tTag * children; TNODE;第80页/共115页第八十页,共116页。811.6 函数(hnsh) 函数的定义格式是: 返回类型 函数名(参数表) 函数体 函数的调用格式是: 函数名(实际参数); 函数原型(yunxng)声明的格式为: 返回类型 函数名(参数表);第81页/共115页第八十一页,共116页。821.6 函数(hnsh) 参数传递 函数定义时的参数称为形式参数,函数调用时的参数称为实际参数。 当函数调用时,首先在栈区内分配形式参数的内存空间(kngjin),然后计算实际参数的值,并将实际参数的值传给形式参数的空间(kngjin)。(对程序执行效率

31、的影响?)第82页/共115页第八十二页,共116页。831.6 函数(hnsh) 参数传递void f(int);void f1(int *);int main() int x=100; f(x); printf(x=%d,x); f1(&x); printf(x=%d,x);void f(int x)int y=100;x+=100;void f1(int * x)int y=100;*x+=y; 第83页/共115页第八十三页,共116页。841.6 函数(hnsh) 参数传递void f2(int);int main() int a=1,2,3;f2(a);printf(%d-%d-%

32、d,a0,a1,a2);void f2(int a3)a0=4;a1=3;a2=2;在参数传递时,它将数在参数传递时,它将数组的地址传给形参,在组的地址传给形参,在函数函数(hnsh)执行时,执行时,改变的是同一数组的元改变的是同一数组的元素值。素值。 第84页/共115页第八十四页,共116页。851.6 函数(hnsh) 函数指针定义形式 返回(fnhu)类型 (* 函数指针变量)(参数表); 函数指针是一个指针变量,与一般指针不同的是,它是指向代码区的,而不是指向数据区的指针。 例:void (*pf)(); 第85页/共115页第八十五页,共116页。861.6 函数(hnsh) 函数

33、指针 void open(); /* open的原型(yunxng)声明 */ void print(); /* print的原型(yunxng)声明 */ void exitIt(); /* exitIt的原型(yunxng)声明 */ void (*pfs)()=open,print,exitIt; /* 函数指针数组 */ int main() int i; void (*pf)(); pf=open; (*pf)(); /* 调用open */ for(i=0;i3;i+)(*pfsi)(); /* 依次调用函数open、print、exitIt */ 第86页/共115页第八十六页,

34、共116页。871.6 函数(hnsh) 其中(qzhng) void open()printf(open); void print()printf(print); void exitIt()printf(exit); 第87页/共115页第八十七页,共116页。881.6 函数(hnsh) 例:以下(yxi)定义的意义 void (*getInterrupt(int no)(); void setInterrupt(int no, void (*pf)(); LRESULT (* lpfnWndProc)(HWND,UINT,WPARM,LPARAM);第88页/共115页第八十八页,共11

35、6页。891.7 存储(cn ch)类型 C中变量(binling)的完整说明形式是:存储类型 数据类型 变量(binling); C中存储类型 register auto(默认存储类型) static extern第89页/共115页第八十九页,共116页。901.7 存储(cn ch)类型 static存储类型 在函数内定义时,static作用范围在函数内,但在运行期间一直存在。 在函数外定义时,从定义点开始有效,但只限于本文件(wnjin)使用。在程序运行期间一直存在。第90页/共115页第九十页,共116页。911.7 存储(cn ch)类型 static存储类型(lixng)-下面代

36、码打印出什么,为什么? int main() void print(); print(); print(); print(); void print() static int i=0; printf(%d-,i+); 第91页/共115页第九十一页,共116页。921.7 存储(cn ch)类型 extern存储类型 在函数(hnsh)内时,引用函数(hnsh)外定义的量。 在函数(hnsh)外时,引用其它文件定义的量。 总之,extern 变量,不分配内存。第92页/共115页第九十二页,共116页。931.8 预编译(biny) 宏定义可用于定义值或定义一些功能,其形式是: #define

37、 预编译(biny) 量 #define预编译(biny)量 值 #define预编译(biny)量(参数, 参数.) 功能定义第93页/共115页第九十三页,共116页。941.8 预编译(biny) 宏定义(dngy)例子 #define PRINT #define子 LEN 200 #define HIWORD(l) *(short*)&l+1) #define LOWORD(l) *(short*)&l)第94页/共115页第九十四页,共116页。951.8 预编译(biny) 宏定义 例如求一个(y )量平方的宏定义的各种写法: #define SQUARE(x) x*x #defi

38、ne SQUARE(x) (x*x) #define SQUARE(x) (x)*(x) #define SQUARE(x) (x)*(x)第95页/共115页第九十五页,共116页。961.8 预编译(biny) 宏引用形如:#include 文件名 例: #include #include “ 在引用位置(wi zhi)引入指定文件(任意文件)的内容。 第96页/共115页第九十六页,共116页。971.8 预编译(biny) 条件编译 #define PRINT int main() #ifdef PRINT /*若定义了PRINT,则下面代码参与(cny)编译*/printf(nPRI

39、NT is defined.); #endif #ifndef PRINT /*若未定义PRINT,则下面代码参与(cny)编译*/printf(nPRINT is not defined.); #endif #ifdef PRINT /*若定义了PRINT,则下面代码参与(cny)编译*/printf(nPRINT is defined.); #else /*否则,即若未定义PRINT,则下面代码参与(cny)编译*/printf(nPRINT is not defined.); #endifprintf(nend); 第97页/共115页第九十七页,共116页。981.9 有缓冲(hunc

40、hng)方式的文件操作及控制台操作 控制台操作(cozu) int printf(const char *, .); int scanf(const char *, .);第98页/共115页第九十八页,共116页。991.9 有缓冲方式(fngsh)的文件操作及控制台操作 控制台操作(cozu) printf(n%d,%ld,%10d,%10ld,6,6L,6,6L);printf(n%x,%5lx,64,64);printf(n%o,%5o,64,64);printf(n%u,%5u,65,-1);printf(n%c,%5c,65,A);printf(n%s,%10s,hello,hel

41、lo);printf(n%f,%10.3f,6.0,6.00);printf(n%e,%10.3e,6.0,6.00););第99页/共115页第九十九页,共116页。1001.9 有缓冲方式(fngsh)的文件操作及控制台操作 控制台操作(cozu) int x; long l; scanf(%d,%ld,&x,&l);int x,y; scanf (%x,%lx,&x,&y);int x,y; scanf (%o,%lo,&x,&y);unsigned int x; scanf (%u,&x);char c1; scanf (%c,&c1);char s120; scanf (%s,s1)

42、;float r1; double r2; scanf (%f,%lf,&r1,&r2 );第100页/共115页第一百页,共116页。1011.9 有缓冲方式(fngsh)的文件操作及控制台操作 文件操作读取操作时有三个步骤: 打开(d ki)文件, 读写操作, 关闭文件,以释放文件所占的各种缓冲区。第101页/共115页第一百零一页,共116页。1021.9 有缓冲方式(fngsh)的文件操作及控制台操作 打开(d ki)文件 FILE * fopen(const char *, const char *); 打开(d ki)文件“”。 char * path=; FILE * strea

43、m; if(NULL=(stream=fopen(path,rb)printf(File %s doesnt exist.,path); exit(0); 第102页/共115页第一百零二页,共116页。1031.9 有缓冲方式的文件(wnjin)操作及控制台操作 打开文件方式 r:打开文件用于输入文件必须存在,否则无法打开 w:打开文件用于输出文件若存在,则删除重新建立( jinl) a:打开文件用于在文件尾追加数据。文件必须存在,否则无法打开 r+:打开文件用于读、写文件必须存在,否则无法打开第103页/共115页第一百零三页,共116页。1041.9 有缓冲(hunchng)方式的文件操

44、作及控制台操作 读写操作-文件(wnjin)状态 函数feof可判定指定的输入流是否结束。其原型定义:int feof(FILE *); 若处于文件(wnjin)尾(end of file),则返回真(1),否则返回假(0)。 函数ferror可判定指定的流是否出错,若有错误,则返回1,否则返回0。其原型定义如下:int ferror(FILE *); 第104页/共115页第一百零四页,共116页。1051.9 有缓冲方式的文件(wnjin)操作及控制台操作读写操作-读写字符函数getc和fgetc都是按字符读入内容,其原型(yunxng)定义如下:int getc(FILE *);int

45、fgetc(FILE *);例:while(!feof(stream)int ch=getc(stream);/这里应是处理代码.第105页/共115页第一百零五页,共116页。1061.9 有缓冲(hunchng)方式的文件操作及控制台操作 读写操作-格式读写按指定的格式读、写文件流的操作函数是以下(yxi)两个函数: int fprintf(FILE *, const char *, .); int fscanf(FILE *, const char *, .); (有差别吗?)第106页/共115页第一百零六页,共116页。1071.9 有缓冲方式的文件(wnjin)操作及控制台操作 读

46、写操作-块读写 函数(hnsh)fwrite将指定缓冲区中的内容写入文件中,函数(hnsh)fread将文件中的内容读到指定的缓冲区中。它们的原型声明如下: size_t fwrite(const void *, size_t, size_t, FILE *); size_t fread(void *, size_t, size_t, FILE *);第107页/共115页第一百零七页,共116页。1081.9 有缓冲(hunchng)方式的文件操作及控制台操作 读写操作-文件指针(zhzhn)操作 函数fseek改变文件指针(zhzhn)的位置。其原型声明为:int fseek(FILE *

47、, long, int); 其中第三个参数可选三个值:0、1、2。0表示以文件头为参照,表示以当前位置为参照,2表示以文件尾为参照。第二个参数表示距参照点的距离,类型为长整数。 函数ftell可得到文件指针(zhzhn)的位置。long ftell(FILE *); 函数rewind将文件指针(zhzhn)返回文件开始位置。void rewind(FILE *);第108页/共115页第一百零八页,共116页。1091.9 有缓冲(hunchng)方式的文件操作及控制台操作 读写操作-文件指针操作 例:利用文件指针计算文件长度的函数(hnsh): long getFileLen(FILE *

48、stream) long old,len; old=ftell(stream);/保留原文件操作地址 fseek(stream,0,2);/将文件指针移至文件尾 len=ftell(stream);/保留文件位置 fseek(stream,old,0); /恢复原文件位置 return len; 第109页/共115页第一百零九页,共116页。1101.9 有缓冲方式(fngsh)的文件操作及控制台操作 关闭文件的函数是:void fclose(FILE * f); 关闭文件后,所以该文件操作的缓冲区全部(qunb)释放。 第110页/共115页第一百一十页,共116页。1111.10 其它(

49、qt)库函数操作 char * strcpy(char *, const char *);字符串拷贝 char * strcat(char *, const char *);字符串连接(linji) int strcmp(const char *, const char *);字符串比较 size_t strlen(const char *);计算字符串长度第111页/共115页第一百一十一页,共116页。1121.10 其它(qt)库函数操作 int isalpha(int); 给定的符号是字母吗? Int isupper(int); 给定的符号是大写(dxi)吗? int islower(

50、int); 给定的符号是小写吗? int isdigit(int);给定的符号是数字符号吗? int isspace(int); 给定的符号是空格吗? int isalnum(int);给定的符号是数字符号或字母吗? int toupper(int);给定的符号字转变为大写(dxi)符号 int tolower(int);给定的符号转变为小写符号 int iscntrl(int);给定的符号是控制符吗?第112页/共115页第一百一十二页,共116页。1131.10 其它(qt)库函数操作 double atof(const char *);字符串转变(zhunbin)为双精度的数 int a

51、toi(const char *);字符串转变(zhunbin)为整数 long atol(const char *); 字符串转变(zhunbin)为长整数 char * itoa(int, char *, int);将整数以指定的进制转变(zhunbin)为字符串 void exit(int);退出应用程序 void * malloc(size_t);分配指定大小的内存空间 void free(void *);释放内存空间 int rand(void);求随机数 int system(const char *); 运行系统命令 void * malloc(size_t); 动态申请内存空间

52、 void free(void *);释放已申请的内存第113页/共115页第一百一十三页,共116页。1141.10 其它(qt)库函数操作 float floorf( float );取地板(dbn)值 float ceilf( float );取天棚值 fabsf( float );取绝对值第114页/共115页第一百一十四页,共116页。115感谢您的观看(gunkn)!第115页/共115页第一百一十五页,共116页。NoImage内容(nirng)总结1。1.1 基本数据类型、操作符、表达式。1.9 有缓冲方式的文件操作及控制台操作。0.1,0.1d。十六进制、十进制、八进制表示。|。例:我们可以将x的第3至第7位置为y。例:我们可以将x的第3至第7取到y中,代码如下。&a+1:表示下一个a10空间的地址(dzh)。aaa(等于&aaa)。*ppp&x。其中第三个参数可选三个值:0、1、2。给定的符号是数字符号吗。给定的符号是数字符号或字母吗。给定的符号字转变为大写符号第一百一十六页,共116页。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!