c语言上课课件第12章

合集下载

c语言学习c语言课件第12章

c语言学习c语言课件第12章
C语言提供fgets()和fputs()函数来实现对文件以字 符为单位进行读写,由于这两个函数在使用中往往是 一次读写一行,所以也称行读写函数。
1. 读字符串函数fgets
C提供读字符串的函数原型在stdio.h头文件中,其函数形式为 :
char *fgets(char *str,int num,FILE *fp)
unsigned char *curp; /*文件读写位置*/
unsigned istemp;
/*临时文件,指示器*/
short token;
/*用于有效性的检查*/
} FILE;
在操作文件以前,应先定义文件类型的指针,定义 的一般格式:
FILE *指针变量标识符
例如:
FILE *fp1,*fp2;
例如:
ch=fgetc(fp);/*从fp指向的文件中读取一个字符送入ch 变量中*/
2. 写字符函数fputc
fputc()函数的原型为:
int fputc(int ch,FILE *fp)
功能:将字符ch的值写入所指定文件的当前位置处,并将文件 指针后移一位。fputc()函数的返回值是所写入字符的值,出 错时返回EOF。
2)标准输出文件——stdout:指向终端输出(一 般为显示器)。
3)标准错误文件——stderr:指向终端标准错误 输出(一般为显示器)。
12.2.2 文件的关闭──fclose()函数 1.用法: int fclose(FILE *文件指针); 2.功能:关闭“文件指针”所指向的文件。如果 正常关闭了文件,则函数返回值为0;否则,返回值 为非0。 例如,fclose(fp);/*关闭fp所指向的文件*/
文件命名规则,遵循操作系统的约定。 2.文件分类 可以从不同的角度对文件进行分类: (1)根据文件的内容,可分为程序文件和数据文 件,程序文件又可分为源文件、目标文件和可执行文件 。 (2)根据文件的组织形式,可分为顺序存取文件 和随机存取文件。

第12章 c语言位运算.ppt

第12章 c语言位运算.ppt

unsigned half_carry: 1; /*半进位标志*/
unsigned negative: 1; /*减标志*/
} flags;
显然,对CPU的状态寄存器而言,使用位段类型(仅需1 个字节),比使用结构类型(需要6个字节)节省了5个 字节。
定义位段的一般格式 struct [结构类型名]
76543210
图11-1 1个字节各二进制位的编号 2.数值的原码表示 数值的原码表示是指,将最高位用作符号位(0表示正 数,1表示负数),其余各位代表数值本身的绝对值(以二 进制形式表示)的表示形式。为简化描述起见,本节约定
用1个字节表示1个整数。
例如,+9的原码是00001001
└→符号位上的0表示正数 -9的原码是10001001。
main()
{ int num, mask, i;
printf("Input a integer number: ");
scanf("%d",&num);
mask = 1<<15; /*构造1个最高位为1、其余各位为0的整数(屏蔽字)*/
printf("%d=" , num);
for(i=1; i<=16; i++)
/*案例代码文件名:AL12_1.C*/ /*程序功能:输出一个整数中由8~11位构成的 数*/ main()
{ int num, mask; printf("Input a integer number: "); scanf("%d",&num); num >>= 8; /*右移8位,将8~11位移到低4位上*/ mask = ~ ( ~0 << 4); /*间接构造1个低4位为1、其

C语言讲义第12章.ppt

C语言讲义第12章.ppt

fwrite(内存地址,长度,次数,文件指针);
float x;
fread ( &x , sizeof(float), 1, fp);
fwrite( &x , 4 , 1 , fp);
19
若有以下的定义和说明
#include”stdio.h” struct std { char num[6];
char name[8]; float mark[4]; } a[30]; FILE *fp;
文件尾部,此时可以进行追加或读操作。
10
如果是二进制文件,则在方式后加“b”。
如果不能正确完成文件的打开操作,函数fopen将返 回错误信息,即返回空指针值NULL。
if ( (fp=fopen (“file1.C”, “r” ) )= =NULL) { printf(“cannot open this file\n”);
main( )
printf(“%d,%f\n” ,_r_.n_u_m__,_r_.t_o_t_a_l _);
{ FILE *f;
f=fopen( “bin.dat”, “rb”); }
reout(f);
}
fanf 函数 是格式化的读写函数,与printf和scanf相仿,但 其读写对象不是终端而是磁盘文件。 fprintf(文件指针,格式字符串,输出列表); fscanf(文件指针,格式字符串,输入列表);
设文件中以二进制形式存有10个班的学生 数据, 且已正确打开,文件指针定位于文件 开头,若要从文件中读30个学生的数据放入 ss数组中,以下不能实现此功能的语句是
A) for (i=0;i<30;i++) fread(&a[i], sizeof(struct std), 1L, fp);

C语言第12章.ppt

C语言第12章.ppt
20
三、字符变量
用于存放字符常量,即一个字符变量只能存放一个 字符。
在内存中占一个字节,取值范围-128~127。
例:char c1, c2 ;
例2.5, 例2.6
2.4 变量的初始化
即定义变量的同时赋于其相同类型的初值。 如:int a=2, b=4 ;
long x=110 ; double d=4.67 ;
xdouble ydouble x+y xint x+y (x+y)double zdouble (x+y)+z
结果类型
int
double long double double
29
例:long m ;
改为:m=(long)234*456/6 ;
m=234*456/6 ;
234L*456/6
m为-4061,而不是17784。
设a=2, b=3,求
a=5+(c=6)
a=5+6=11
a+=a=a+b
(1)a=a+b=2+3=5 (2)a=a+a=5+5=10
a%=b%=2
(1) b=b%2=3%2=1 (2) a=a%b=2%1=0
b+=b-=(b*b) (1) b=b-(b*b)=3-(3*3)=-6 (2) b=b+b=-6+(-6)=-12
22
2.5.1 算术运算符和算术表达式
一、基本算术运算符
+、-、*、/、%
优先级:*、/、%高于+、- 结合性:自左至右
注意%的使用:
(1)%两侧均为整型数据
(2)结果的符号由左边数据的符号决定。
如:5%(-3)=2 -5%3=-2

C语言PPT教程第十二章

C语言PPT教程第十二章
• “a”方式打开:只可写,追加方式写入(实际是从 文件结尾处打开),如果要打开的文件存在,则向 文件写入时会在已有文件内容后追加,文件不存在, 则按指定文件名新建一个文件
• “r+”方式打开:可读写
• “w+”方式打开:可读写
• “a+”方式打开:可读写,追加方式写入
15
打开文本文件
fopen在程序中的一般形式
言对于该文件的操作,全部通过操作该指针 来完成 • 文件指针声明方式为:
FILE *fp
此处必须大写
12
文件指针的名称,可随意
基本的文件函数
函数名 fopen( ) fclose( ) fputc( ) fgetc( ) fread() fwrite() fseek( ) fprintf( ) fscanf( ) feof( ) ferror( ) rewind( ) remove( ) fflush( )
回顾
• 上一节课主要讲解了以下内容
– 结构体 – 结构体数组 – typedef关键字 – 冒泡排序法 – 插入排序法
1
目标
• 解释流和文件 • 讨论文本流和二进制流 • 解释各种文件函数 • 解释文件指针 • 讨论当前活动指针
2
文件操作的必要性
• 程序或软件有时需要把处理的数据
– 永久保存 – 方便地移动和交换 – 只在必要时打开和调用
int fclose(FILE *fp); – fcloseall() 函数用于关闭所有打开的流
18
向文本文件中写入字符
• fputc() 用于将字符写入前面由 fopen() 打开的 文件
• fputc()函数的原型为: fputc(char ch, FILE *fp);

C语言新教材PPT课堂课件第12章位运算

C语言新教材PPT课堂课件第12章位运算
| 1001 ────
1011=11 (3)主要用途:将1个数的某(些)位置1,其余各位不变。
3.按位异或── ^ (1)格式:x^y (2)规则:对应位相同时为0,不同时为1:3^9=10。 例如,3^9=1: 0011
^ 1001
────
1010=10 (3)主要用途:使1个数的某(些)位翻转(即原来为1的位变为0,为0 的变为1),其余各位不变。 4.按位取反── ~ (1)格式:~x (2)规则:各位翻转,即原来为1的位变成0,原来为0的位变成1: 在IBM-PC机中,~0=0xffff,~9=0xfff6。 (3)主要用途:间接地构造一个数,以增强程序的可移植性。 5.按位左移── << (1)格式:x<< 位数 (2)规则:使操作数的各位左移,低位补0,高位溢出:5<<2=20。
程序运行情况:
Input a integer number:1000 ←┘
result=0x3
程序说明:~ ( ~0 << 4)按位取0的反,为全1;左移4位后,其低4位为0,其 余各位为1;再按位取反,则其低4位为1,其余各位为0。这个整数正是我们 所需要的。
[例12.2] 从键盘上输入1个正整数给int变量num,按二进制位输 出该数。
printf("Input a integer number: ");
scanf("%d",&num);
num >>= 8;
/*右移8位,将8~15位移到低8位上*/
mask = ~ ( ~0 << 4);/*间接构造1个低4位为1、其余各位为0的整数*/
printf("result=0x%x\n", num & mask); }

C语言教案第12章PPT课件

C语言教案第12章PPT课件
学习结束学生应达到三会—— 会读程序、会编程序、会调程序。
3
03.12.2020
三、教学环境:
采用多媒体教学环境:黑板、投影、程序编 制、演示、调试等。
四、参考教材:
[1]C程序设计,谭浩强,清华大学出版社
[2] The C Programming Language (Second Edition)
,Brian W.Kernighan & Dennis M.Ritchie
[3] C语言大全,王子恢等译 电子工业出版社
五、课程验收:平时、实验、作业、期末
六、教学时数:48/15 4
03.12.2020
第一章 程序设计基础
5
03.12.2020
一、计算机基础知识
1、计算机系统组成 2、计算机基本工作过程 3、DOS基本知识
2.1 C程序的组成结构及特性
一、程序结构
程序一:
main() { printf(“This is a c program. \n”); }
17
03.12.2020
程序二:
# include <stdio.h>
main()
/*求两数之和*/
{int a,b,sum; /*定义变量*/
a=123;b=456;
2006年2月
1
03.12.2020
教师பைடு நூலகம்况及联系方式:
计算机科学与技术学院
计算机语言教研室
王庆北
Add:综合实验楼214房间 E-mail:zyzy@
Tel:
2
03.12.2020
一、教学内容: C语言程序设计的基本语法、基本句
法、基本结构和基本程序设计方法。

c第12章 上 机 实 验ppt课件

c第12章  上 机 实 验ppt课件

精品课件
2
实验一 C程序的运行环境
一、实验目的
1. 了解在计算机上如何录入、编辑、编译、连接和运行一个C程序。 2. 通过设计和调试简单的C程序,初步了解C程序的特点。 二、实验内容
1. 确保计算机操作系统中已安装了Turbo C。 2. 启动Turbo C。 (1) 将操作方式转入到MS-DOS方式。 (2) 假 设 Turbo C所在的目录为 C:\tc, 则 调用 Turbo C的 命 令 一般 为
(4) 2. 程序修改题
(5) 3. 程序编写题
(4) (1) 用选择法对10个整数作排序。10个整数用scanf函数
输入。
(5) (2) 编写连接两个字符串的程序。
精品课件
8
实验七 函 数
一、实验目的 1. 掌握定义函数的方法。 2. 掌握函数实参与形参的对应关系,以及“值传递”的方式。 3. 掌握函数的嵌套调用和递归调用的方法。 4. 掌握用“Project”菜单管理多个源程序文件的方法
C:\tc\tc,执行此命令后屏幕上将出现Turbo C的工作环境。 3. 熟悉Turbo C集成环境。
了解Turbo C界面的组成,各菜单命令、各功能键的作用。下面将详 细介绍各菜单命令及相应功能键的作用。
4. 编辑及运行一个简单的C源程序。 5. 重新开始编辑和运行另一个程序。 6. 人为地制造一些语法错误。 7. 独立完成教材第一章思考与练习中的第四大题。 8. 退出Turbo C环境。
不同类型数据间的混合运算规律。 4. 进一步掌握C语言简单程序设计的几个步骤。
二、实验内容 输入程序(教材p238),编译、运行、分析。
精品课件
4
实验三 顺序结构程序设计
一、实验目的 1. 掌握各种类型数据的输入输出方法,能正确运用各种格式字符。 2. 掌握C语言中顺序结构程序的设计方法,为以后作好准备。

C语言与程序设计ppt-第12章递归

C语言与程序设计ppt-第12章递归

第12章 递 归
华中科技大学计算机学院 卢萍
华中科技大学计算机学院C语言课
2021/4/25
程组
1
本章讲授内容
递归(recursion)是一项非常重要的编 程技巧,可以使程序变得简洁和清晰,是 许多复杂算法的基础。本章介绍 递归、递归函数的概念; 递归的执行过程; 典型问题的递归函数设计; 分治法与快速排序; 回溯法; 递归在动态规划等算法中的应用。
12
【例12.3】 设计一个求解汉诺塔问题的算法。
这是一个典型的用递归方法求解的问题。要移动n个 盘子,可先考虑如何移动n 1个盘子。分解为以下3 个步骤:
(1)把A上的n-1个盘子借助C移到B。 (2)把A上剩下的盘子(即最大的那个)移到C。 (3)把B上的n-1个盘子借助A移到C。 其中,第(1)步和第(3)步又可用同样的3步继
2021/4/25
华中科技大学计算机学院C语言课程组
2
12.1 递归概述
递归是一种函数在其定义中直接或间接调用 自己的编程技巧。递归策略只需少量代码就 可描述出解题过程所需要的多次重复计算, 十分简单且易于理解。
递归调用:函数直接调用自己或通过另一函 数间接调用自己的函数调用方式
递归函数:在函数定义中含有递归调用的函 数
续分解,依次分解下去,盘子数目n每次减少1,直 至n为1结束。这显然是一个递归过程,递归结束条 件是n为1。
2021/4/25
华中科技大学计算机学院C语言课程组
13
函数move(n,a,b,c)
为了更清楚地描述算法,可以定义一个函数 move(n,a,b,c)。该函数的功能是:将n个盘 子从木桩a上借助木桩b移动到木桩c上。算法 的第(1)步和第(3)步的实现都是递归调 用,分别为move(n-1,a,c,b)和move(n1,b,a,c)。

C程序设计课件第12章

C程序设计课件第12章

整理ppt
13

– 申请 float *p ; p = (float*)malloc( sizeof(float) ); struct date *pdate; pdate=(struct date*)malloc(sizeof(struct date));
– 释放 free(p); free(pdate);
首先,用什么数据结构存储:一张卡片是一 个结构体,所有卡片自然用结加一个人,应该在数组中加一个元素,会 产生数组不够大的可能。
– 若增加一张卡片在数组中间,应该把加入位置 以后的其它元素依次向后移动。
– 若在中间删除一张卡片,会在数组中间留下一 个“洞”,应该把“洞”以后的元素依次向前 移动
▪ 对一次申请的存储区进行多次释放(实际可能是 ptr无值或值为NULL)。
整理ppt
15
实用问题:
– 若指针变量指向的用malloc申请来的动态变量,是孤 立的不能与其它变量相联系,显然作用不大。
一章定义的日期类型,结果是6 */
整理ppt
10
malloc 函数: – 原型 void *malloc(unsigned long size); – 功能 申请足够大内存区域用来存储长度为size 的数据对象,返回该区域的首指针,并保证该 区域符合任何数据类型对存储区域开始地址和 对齐的要求。
返回指针是void类型的,调用者必须使用 显示强制类型转换,把该指针转换成所需要类 型的指针。
整理ppt
11
例: float *p ; p = (float*)malloc( sizeof(float) ); struct date *pdate; pdate=(struct date*)malloc(sizeof(struct date));

C语言第12章PPT教学课件

C语言第12章PPT教学课件

printf("input a to creat(########.###):"); gets(); if ((fp=fopen(,"wb"))==NULL)
如果正常关闭了文件,则函数返回值为0; 否则,返回值为非0(-1)。
2020/12/09
9
12.3 文件的读写操作
文件打开之后,就可以对它进行读与写的操作了。
12.3.1 读/写一个字符 12.3.3 读/写一个数据块 12.3.2 读/写一个字符串 12.3.4 格式化读/写 12.3.5 读/写函数的选用原则
第12章 文 件
程序运行时,数据一般都存放在内存中。当程序运行结 束后,存放在内存中的数据被释放。
如需长期保存程序运行所需的原始数据,或程序运行产 生的结果,就必须将数据以文件形式存储到外部存储介质上。
12.1 C语言文件概述 12.2 文件的操作步骤 12.3 文件的读写操作 12.4 位置指针与文件定位 12.5 出错检测
p.310
二、打开文件──fopen()函数 以某种使用方式打开文件
p.311
if( (fp=fopen(“文件名”,“使用方式”)) ==NULL)
{ printf("can not open this file\n");
exit(0);
}
正常返回DOS
2020/12/09
7
文件的使用方式: “r” 以只读方式打开已有文本文件 “w” 以只写方式打开新文本文件 “a” 以只写方式打开已有文本文件,追加数据到末尾 “r+”、”w+”、”a+” 以读写方式打开ASCII文件
2020/12/09
1

C语言第12章

C语言第12章

Turbo C提供了一个自动检测显示器硬件的函数, 其调用格式 为: void far detectgraph(int *gdriver, *gmode); 其中gdriver和gmode的意义见表12.5。
【例12-3】自动进行硬件测试后进行图形初始化。 - #include <graphics.h> main() { int gdriver, gmode; detectgraph(&gdriver, &gmode); /*自动测试硬件*/ printf("the graphics driver is %d, mode is %d\n", gdriver, gmode); /*输出测试结果*/ getch(); initgraph(&gdriver, &gmode, "c:\\tc"); /* 根据测试结果初始化 图形*/ bar3d(10, 10, 130, 250, 20, 1); getch(); closegraph(); return 0; }
但某位为1时 表示相应的键已按,或相应的控制功能已有效, 但某位为 时,表示相应的键已按,或相应的控制功能已有效,如选参数 CMD为2,则有:key=bioskey(2)。 若key 值为 值为0x09,则表示右边的 为 ,则有: 。 ,则表示右边的Shift键 键 被按,同时又按Alt键 被按,同时又按 键。
第12章 C语言图形介绍 12章
Turbo C 提供了非常丰富的图形函数以实现图形程序设 计,所有图形函数的原型均在graphics.h中,本章主要介绍 键盘、鼠标、光标等的控制,主要的图形函数的功能、使 用方法,并用实例加以解释。本章的内容供有志于编写实 用系统的读者参考,在实际编写此类程序时可能还需要查 阅相关手册

C语言第十二章.ppt

C语言第十二章.ppt
int endangle,int radius); void ellipse(int x, int y, int stangle,
int endangle, int xradius,int yradius);
12.1.5 封闭图形的填充
❖填充模式设置 void far setfillstyle(int pattern, int color); void far setfillpattern(char * upattern,int color); void far getfillpattern(char * upattern); void far getfillsetings(struct fillsettingstype far * fillinfo);
void far moverel(int dx, int dy); 移动游标从当前位置(x, y)移动到 (x+dx, y+dy)的位置, 移动过程中不画点。
❖画点函数 void far putpixel(int x, int y, int color); int far getpixel(int x, int y);
void far initgraph(int far *gdriver,
int far *gmode, char *path); 其中,gdriver和gmode分别表示图形驱动器和模式, path是指图形驱动程序所在的目录路径。其值参见 表12-1
void far detectgraph(int *gdriver, *gmode); 自动检测显示器硬件的函数, 用gdriver= DETECT 语句 进行初始化。
返回当前背景颜色值。
int far getcolor(void);

C语言程序设计 chapter12 文件PPT课件

C语言程序设计 chapter12 文件PPT课件
作为函数返回值传给操作系统。
11
高级语言程序设计
第12章 文件
2. 文件的三种基本使用方式
只读方式:为读(输入)文本文件打开文件。若文件
不存在,返回NULL。
只写方式:为写(输出)文本文件打开文件。若文件
不存在,则建立一个新文件;若文件已存在,
则清空文件。
追加方式:为写(输出)文本文件打开文件。若文件
高级语言程序设计
第12
高级语言程序设计
第12章 文件
存储到内存的各种类型的数据,当程序运 行结束, 这些数据随之消失, 下次再运行还要重 新输入。
用文件可以将输入或输出数据有组织的长 期保存在磁盘中。数据可以做到一次输入,反 复使用,提高输入输出效率。
“文件”是指一组相关数据的集合。每个 文件均有一个名称, 即文件名,可以唯一标识 一个文件。
定义文件指针的一般形式为:
FILE *指针变量标识符;
8
高级语言程序设计
第12章 文件
12. 2 文件的打开与关闭
其中FILE是由系统定义的一个结构体类型,该类
型的结构体中含文件相关信息。
typedef struct
{ sho在rtCle语ve言l; 中,无论对/*磁缓盘冲区文“件满还/是空”设程度*/
} 若ex文it(0件);打开成功,为该文件分配一个文件缓冲 区1. 和检一查个以F只IL读E方类式型打变开量文,件返名回为 一 个 FILE 类 型 指 针;“e:\\soft\\tc\\stu.txt ”的文件是否成功。
2.若e文xi件t函打数开的失作败用,:返结回束程NU序L的L。执行,并将实参0
文件名:需要打开的文件名称(字符串)。
文件使用方式:是具有特定含义的符号。

《计算机基础与C语言程序设计》课件第12章

《计算机基础与C语言程序设计》课件第12章

rb
以只读方式打开一个二进制文件。其余功能与 r 相同。
wb
以只写方式打开一个二进制文件。其余功能与 w 相同。
ab
以追加方式打开一个二进制文件。其余功能与 a 相同。
r+b
以先读后写方式打开一个二进制文件。其余功能与 r+相同。
w+b
以先写后读方式打开一个二进制文件。其余功能与 w+相同。
a+b
以先追加后读方式打开一个二进制文件。其余功能与 a+相同。
ASCII码文件是指组成文件的字节流中,每个字节存储 一个字符的ASCII码。例如,整数10000在ASCII文件中的存 储形式为
00110001 00110000 00110000 00110000 00110000 共占用磁盘5个字节的存储空间。00110001代表数字1 的ASCII编码,00110000代表数字0的ASCII编码。
23
当调用fopen( )函数时,如果打开失败,将返回 NULL(NULL在stdio.h头文件中被定义为0,即#define NULL 0)。
下面的程序段可以在打开一个文件时,通过将返回的 指针赋给文件型指针变量来判断文件是否打开成功。
FILE *fp; fp=fopen("c:\\1.txt","r"); if (fp==NULL){ print("can not open the file!\n"); exit(1); }
FILE *fp; fp被定义为指向FILE类型的指针变量,称为文件型指 针。
17
12.2 文件的打开与关闭
在对文件进行操作前需要打开文件。文件被打开后, 才可以对其进行读/写操作。使用完文件后,必须关闭文件。

C语言PPT (12)

C语言PPT (12)
2012-5-6 C语言程序设计 16
• 如果有一个如下的结构体类型: struct student_type {char name[10]; int num; int age; char addr[30]; }stud[40]; • 结构体数组stud有40个元素,每一个元素用来存放一个学生的数据(包括姓 名、学号、年龄、地址)。假设学生的数据已放在磁盘文件中,可以用下面 的for语句和fread函数读入40个学生的数据。 for(i=0;i<40;i++) fread(&stud[i],sizeof(struct student_type),1,fp); • 同样,以下for 语句和fread函数可以将内存中的学生数据输出到磁盘文件 中去; for(i=0;i<40;i++) fwrite((&stud[i],sizeof(struct student_type),1,fp); 如果fread 或fwrite调用成功,则函数返回值为count的值,即输入或输 出数据项的完整个数。
2012-5-6 C语言程序设计 11
12.3 文件的读写
• 文件打开之后,就可以对它进行读写 操作了。文件读写包括文本文件的字 符或字符串读写、二进制文件的数据 块读写和文本文件的格式化读写等方 式,这些读写都是通过函数来实现的。
2012-5-6
C语言程序设计
12
12.3.1 读/写一个字符函数
2012-5-6
C语言程序设计
15
12.3.3 读/写一个数据块函数
用fgetc、fputc和fgets、fputs可以用来读写文件中的字符或 字符串。但是常常要求一次读入一组数据(例如,一个实数或一个结构 体变量的值),ANSI C标准提出设置两个函数(fread和fwrite), 用来读写一个数据块。这们的一般调用形式为: fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 其中: buffer:是数据块的指针。对于fread来说,它是读入数据存放的 起始地址。对于fwrite来说,是待输出数据的起始地址。 size:表示每个数据块的字节数。 count:用来指定每读、写一次,输入或输出数据块的个数(每个 数据块具有size字节)。 fp:文件指针。 如果文件以二进制形式打开,用fread和fwrite函数就可以读写任 何类型的信息,如: fread(f,4,2,fp); 其中f是一个数组名。一个实型变量占4个字节。这个函数从fp所指 向的文件读入2个4字节的数据,存储到数组f中。

《C语言程序设计》微课课件 第12章 文件

《C语言程序设计》微课课件 第12章 文件

文件根本操作
文件操作方式表示符的内容及含义
文件使用方式 “r”(只读) “w”(只写) “a”(追加) “rb”(只读) “wb”(只写) “ab”(追加) “r+”(读写) “w+”(读写) “a+”(读写) rb+”(读写) “wb+”(读写) “ab+”(读写)
含义 打开一个文本文件,只允许读数据 打开或建立一个文本文件,只允许写数据 打开一个文本文件,并在文件末尾增加数据 打开一个二进制文件,只允许读数据 打开或建立一个二进制文件,只允许写数据 打开一个二进制文件,并在文件末尾写数据 打开一个文本文件,允许读和写 打开或建立一个文本文件,允许读写 打开一个文本文件,允许读或在文件末追加数据 打开一个二进制文件,允许读和写 打开或建立一个二进制文件,允许读和写 打开一个二进制文件,允许读或在文件末追加数据
fread(buffer,size,count,fp); fwrite(buffer,size,count,fp);
例如:
char str[20]; fread(str,3,5,fp);
数据块读写——fread和fwrite函数

使用fread和fwrite函数读写文件
数据块读写——fread和fwrite函数
2.字符写函数fputc
Two
fputc()函数的功能是将一个字符输出到文件中,其函数原型为:
int fputc(int c,FILE *fpoint);
函数调用的一般形式为:
fputc(字符量,文件指针fp);
例如:
char c='a'; fputc(c,fp);
fputc('a',fp);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息学院计算机基础教研室
C语言程序设计 a^0=a 与 0 相 ^,保留原值 , 结果为0 a^a=0 与自己相 ^ ,结果为 012 ^ 00 = 012 00001010 00000000 ^ 00001010 交换两个值, 交换两个值,不用临时变量 [例] 设 a=3,b=4;将a和b的值互换即 的值互换即a=4,b=3。 例 ; 和 的值互换即 。 a= 011 赋值语句: 赋值语句:a=a ^ b; ^ b= 100 b=b ^ a; a= 111 (a=a^b=7) a=a ^ b; ^ b= 100 b= 011 (b=b^a=3) ^ a= 111 a= 100 (a=a^b=4)
信息学院计算机基础教研室
1、规则 、
C语言程序设计
五、<< 左移
1、规则 、 m<<n 数m的各二进位左移 位, 的各二进位左移n位 的各二进位左移 右补n 右补 个0 左移2位 右补2个 例: a=a<<2 左移 位,右补 个0 00001111 a=15 00111100 2、应用 、 m左移 位=m乘以 左移1位 乘以 乘以2 左移 m左移 位=m乘以 n 左移n位 乘以 乘以2 左移
2、应用 、 m右移1位=m除以 除以2 右 位 除以 m右移 位=m除以 n 右移n位 除以 除以2 右移
信息学院计算机基础教研室
C语言程序设计
七、位运算与赋值运算符结合
&=, |=, >>=, <<=, ^= a&=b a=a&b a<<=2 a=a<<2
八、不同长度数据的位运算
long a; int b; a&b; 两者按右端对齐 b正数,左端 位补 正数, 位补0 正数 左端16位补 b负数,左端 位补 负数, 位补1 负数 左端16位补
信息学院计算机基础教研室
C语言程序设计 [例] 设 int a , 整数 a 为 2 Byte 例 取低字节 c=a&b , b=0377(八进制) 八进制) a 00101100 10101100 b 00000000 11111111 c 00000000 10101100 取高字节 c=a &b , b=0177400 a 00101100 10101100 b 11111111 00000000 c 00101100 00000000
信息学院计算机基础教研室
C语言程序设计
二、位段
1、定义 、 位段:是以位为单位 位为单位定义长度的结构体类型中 位段:是以位为单位定义长度的结构体类型中 的成员。 的成员。 如: struct packed - data 占2位 位 { unsigned a : 2; unsigned b : 6; unsigned c : 4; unsigned d : 4; int i; } data; a
信息学院计算机基础教研室
C语言程序设计
二、| 按位或
1、规则 0 | 0 = 0 、 0|1=1 1|0=1 1|1=1 例:060 | 017 = 077 00110000 | 00001111 00111111 2、应用:对一个数据的某些位定值为 、应用:对一个数据的某些位定值为1 [例] 设 int a , 整数 为 2 Byte 整数a为 例 位置为1, 低8位置为 ,高8位保留原样 位置为 位保留原样 a=a | 0377
c
4 7位空闲 位空闲
i
16位 位
2、引用 、 data.a = 2; data.b = 7; data.c = 9; 注意位段允许的最大值范围 注意位段允许的最大值范围
8c 6 5 4 3 2 1 0 7 b a 4位 3位 2位 a的值 位 位 位 的值:0~3 的值 c的值 的值:0~15 的值 b的值 的值:0~7 的值
信息学院计算机基础教研室
C语言程序设计
二、数值的表示
原码: 正数:最高位(符号位) 原码: 正数:最高位(符号位)为0 负数:最高位(符号位) 负数:最高位(符号位)为1 其余为该数的二进制数 反码: 正数:反码=原码 反码: 正数:反码 原码 负数:反码=原码取反 符号位为1) 原码取反( 负数:反码 原码取反(符号位为 )
信息学院计算机基础教研室
a=15*22=60
C语言程序设计
六、>> 右移
1、规则 、
m>>n 数m的各二进位右移 位, 的各二进位右移n位 的各二进位右移 无符号数、正数: 无符号数、正数:左补 n个0 个 负数:左补n个 (算术右移) 负数:左补 个1(算术右移) 例: a=a>>2 右移2位,左补 个0 位 左补2个 00001111 a=15=017 00000011 a=15/22=3
信息学院计算机基础教研室
C语言程序设计
三、^ 按位异或
1、规则 、 0^0=0 0^1=1 1^0=1 1^1=0 例: 071 ^ 052 = 023 00111001 ^ 00101010 00010011 2、应用 、 使特定位翻转 01111010 要翻转的位 ^ 00001111(找的数:对应位为 ,其余为 ) (找的数:对应位为1,其余为0) 01110101
正数:补码=原码 原码=反码 正数:补码=原码=反码 补码: 负数:补码=反码 补码: 负数:补码 反码 (符号位为 ) 反码+1(符号位为1) 计算机中数据以补码形式存放 [例] 设用 个字节表示一个数 例 设用1个字节表示一个数 x=+7 [x]原=[x]反=[x]补=00000111 y=-7 [y]原=10000111 [y]反=11111000 [y]补=11111001
C语言程序设计
第十二章 位运算
信息学院计算机基础教研室
C语言程序设计
§12.1 概述
一、字节和位
(Byte)=8位 1字节(Byte)=8位(Bit) 字节(Byte)=8 76 543 2 10 最高位 最低位
1字(word)=若干个字节 字 若干个字节 PC中:int 2Byte 中 float 4Byte char 1Byte
信息学院计算机基础教研室
C语言程序设计
§12.4 位 段
Hale Waihona Puke 一、人为分段使用字节中某些位
[例] 定义 int data ; 数据 data 分为 4段 例 段 a: 2 bit data : b: 6 bit a b c 2byte c: 4 bit 15 14 13 8 7 d: 4bit
d
4 3 0
信息学院计算机基础教研室
C语言程序设计 3、几点说明 、
i某一位段要从另一个字开始存放 定义: 定义: unsigned a:1; unsigned a:2; 一个存储单元 unsigned :0; unsigned c:3; (另一单元) 另一单元) i一个位段存储不能跨两个单元 i可定义无名位段 unsigned a:1; unsigned :2; (这两位空间不用) 这两位空间不用) 这两位空间不用 unsigned b:3; unsigned c:4; 不能定义位段数组, i不能定义位段数组,位段长度不大于单元长度 i输出格式符可为:%d、%u、%o、%x等 输出格式符可为: 、 、 、 等
信息学院计算机基础教研室
C语言程序设计 例: 3&5=1 00000011(3的补码) ( 的补码 的补码) & 00000101(5的补码) 的补码) ( 的补码 00000001
2、应用 、 清零(单元清零) 清零(单元清零) 00101011 & 11010100(找的数:对应位取反) (找的数:对应位取反) 00000000 取一个数中某些指定位 01010100 要保留的位 & 00111011(找的数:取1,取0) (找的数: , ) 00010000 即:a=84,b=59,c=a&b=16
信息学院计算机基础教研室
C语言程序设计 main() { unsigned a, b, c, d; scanf(“ %o “ , & a ); b = a >> 4; c = ~ ( ~ 0 << 4 ); d = b & c; printf (“ %o\n%o\n” , a, d ) ; } 运行如下: 运行如下: 331 331 (a的值) 的值) 的值 15 (d的值) 的值) 的值
2位 位
b
6
c
4
d
4
i
16
data:4B
信息学院计算机基础教研室
C语言程序设计
struct packed-data { unsigned a : 2; unsigned b : 3; unsigned c : 4; int i; }; struct packed-data data;
a b
2位 3 位
信息学院计算机基础教研室
C语言程序设计 [例 12. 2] 循环移位 例 将 a 右循环移 n 位 算法思想: 算法思想 将 a 的右端 n 位先放到 b 中的高 n 位中 b = a << ( 16 - n ) 将 a 右移 n 位,其左面高位 n 位补 0 其左面高位 c = a >> n 将 c 与 b 按位或 c=c|b a:
右移 C: n位 位
信息学院计算机基础教研室
n 位
C语言程序设计 main ( ) { unsigned a, b, c ; int n ; scanf( “ a = % o , n = % d “, & a , & n ); b = a << (16 - n ); c = a >> n ; c=c|b; printf ( “ % o \n % o”, a, c ); } 运行如下 运行如下: a=157653,n=3 157653 同理可得左循环位移 75765
相关文档
最新文档