
位运算符 位运算是指进行二进制位的运算。 位运算符及其功能 运算符 含 义 优先 级 单 (双)目 结合方向 按位求反 (高) 单目 自右到左 右移 & 按位与 双目 按位或 按位异或 (低)
位运算符 位运算是指进行二进制位的运算。 运算符 含 义 优 先 级 单(双)目 结合方向 ~ 按位求反 (高) (低) 单目 自右到左 > 左移 右移 双目 自左到右 & 按位与 | 按位或 ∧ 按位异或 位运算符及其功能

位运算符 按位与”运算(&): 1&1=1,1&0=0,0&1=0,0&0=0 作用:清零 “按位或”运算(): 11=1,10=1,011=1,010=0 作用:置一 “按位异或”运算(∧):判断两个相应位的 值是否为异 1^1=0,1^0=1,0^1=1,0^0=0 作用:特定位反转
位运算符 “按位与”运算(&): 1&1=1,1&0=0,0&1=0,0&0=0 作用:清零 “按位或”运算( | ): 1|1=1,1|0=1,0|1=1,0|0=0 作用:置一 “按位异或”运算( ^ ) :判断两个相应位的 值是否为异 1^1=0,1^0=1,0^1=1,0^0=0 作用:特定位反转

位运算符 “按位取反”运算符(): 0=1,~1=0 作用:按位取反 “左移”运算符(>): 各位全部右移若干位,移出位舍弃,左端补位: 无符号数左补0,有符号数左补原符号位 位运算复合赋值运算符 &=,=,>>=,<<=,=
位运算符 “按位取反”运算符(~) : ~0=1,~1=0 作用:按位取反 “左移”运算符( > ) : 各位全部右移若干位,移出位舍弃,左端补位: 无符号数左补0,有符号数左补原符号位 位运算复合赋值运算符 &=, |=, >>=, <<=, ^=

第14章文件 §14.1C文件概述 ★文件:存储在外部介质上数据的集合,是操作系统 数据管理的单位 使用数据文件的目的 1、数据文件的改动不引起程序的改动一程序与数据分离 2、不同程序可以访问同一数据文件中的数据—数据共享 3、 能长期保存程序运行的中间数据或结果数据
第14章 文件 §14.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统 数据管理的单位 使用数据文件的目的 1、数据文件的改动不引起程序的改动——程序与数据分离 2、不同程序可以访问同一数据文件中的数据——数据共享 3、能长期保存程序运行的中间数据或结果数据

文件的格式 §二进制文件 ★是一种字节序列,没有字苻变换 ★按照数据在内存中的存储形式存储到文件 ★如整数127,若在内存占2个字节,为0000000001111111, 则文件中也存储为0000000001111111,占2个字节 §文本文件/ASCⅡ码文件 ★是一种字符序列 ★文件中存储每个字苻的ASCII码 ★如整数127在文件中占3个字节,分别存放这3个字符的 ASCII码,即49,50,55
文件的格式 §二进制文件 是一种字节序列,没有字符变换 按照数据在内存中的存储形式存储到文件 如整数127,若在内存占2个字节,为0000000001111111, 则文件中也存储为0000000001111111,占2个字节 §文本文件/ASCII码文件 是一种字符序列 文件中存储每个字符的ASCII码 如整数127在文件中占3个字节,分别存放这3个字符的 ASCII码,即49,50,55

★文件处理方法 必缓中文件系统:高级文件系统,系统自动为正在使用 的文件开辟内存缓中区 必非缓冲文件系统:低级文件系统,由用户在程序中为 每个文件设定缓中区 输入文件缓冲区 缓冲文件系统: 磁盘文件 程序数据区 a 输出文件缓冲区
文件处理方法 ❖缓冲文件系统:高级文件系统,系统自动为正在使用 的文件开辟内存缓冲区 ❖非缓冲文件系统:低级文件系统,由用户在程序中为 每个文件设定缓冲区 磁盘文件 输出文件缓冲区 输入文件缓冲区 程序数据区 a 缓冲文件系统:

文件类型指针 ★文件结构体FLE 冬缓冲文件系统为每个正使用的文件在内存开辟文件信 息区 文件信息用系统定义的名为FILE的结构体描述 FILE定义在stdio.h中 typedef struct { int fd; 文件号 int cleft; /缓冲区中剩下的字符数 int mode; 文件操作方式 char next; 文件当前读写位置 char*bufr,/文件缓冲区位置 FILE: 冬指针变量说明:FILE*p;
文件类型指针 文件结构体FILE ❖ 缓冲文件系统为每个正使用的文件在内存开辟文件信 息区 ❖文件信息用系统定义的名为FILE的结构体描述 ❖FILE定义在stdio.h中 typedef struct { int _fd; //文件号 int _cleft; //缓冲区中剩下的字符数 int _mode; //文件操作方式 char *_next; //文件当前读写位置 char *_buff; //文件缓冲区位置 }FILE; ❖指针变量说明: FILE *fp;

§14.2文件的打开与关闭 口C文件操作用库函数实现,包含在stdio.h 四文件倒FLE* 件 文件使用方式 含义 “r/rb”(只读) 为输入打开一个文本/二进制文件 “wwb”(只写) 为输出打开或建立一个文本/二进制文件 “aab”(追加) 向文本/二进制文件尾追加数据 r+/b+”(读写) 为读/写打开一个文本/二进制文件 “w+/wb+”(读写) 为读/写建立一个文本/二进制文件 a+/ab+”(读写) 为读/写打开或建立一个文本/二进制文件 if fp=NULL) printf(File open error!\n) exit(0);
§14.2 文件的打开与关闭 C文件操作用库函数实现,包含在stdio.h 文件使用方式:打开文件->文件读/写->关闭文件 打开文件fopen ❖功能:按指定方式打开文件 fopen函数的调用方式: FILE *fp; fp=fopen(文件名,使用文件方式); ❖返值:正常打开,为指向文件结构体的指针;打 开失败,为NULL 例 文件打开与测试 FILE *fp; fp=fopen(“aa.txt”,“w”); if(fp==NULL) { printf(“File open error!\n”); exit(0); } 例 FILE *fp; fp= fopen (“test.dat”,”r”); “r+/rb+” (读写) “a/ab” (追加) “w/wb” (只写) “r/rb” (只读) “w+/wb+” (读写) “a+/ab+” (读写) 为输入打开一个文本/二进制文件 为输出打开或建立一个文本/二进制文件 为读/写打开一个文本/二进制文件 为读/写建立一个文本/二进制文件 为读/写打开或建立一个文本/二进制文件 向文本/二进制文件尾追加数据 文件使用方式 含义

★文件关闭fclose 冬作用:使文件指针变量与文件“脱钩”,释放文件结构 体和文件指针 函数调用形式:fclose(文件指针); 必功能:关闭fp指向的文件 必返值:正常关闭为0;出错时,非0
文件关闭fclose ❖作用:使文件指针变量与文件“脱钩”,释放文件结构 体和文件指针 ❖函数调用形式: fclose(文件指针); ❖功能:关闭fp指向的文件 ❖返值:正常关闭为0;出错时,非0

§14.3文件的读写 ★格式化I/O:fprintf与fscanf 函数原型: int fprintf(文件指针,格式字符串,输出表列) int fscanf(文件指针,格式字符串,地址表列) 功能:按格式对文件进行I/O操作 返值:成功,返回I/○的个数;出错或文件尾,返回EOF #include 例 fprintf(fp,"d mainO 到p文件 fscanf(fp,“%d, {int a=10; 入i,4.5送入t FILE *fp; fp=fopen("d \aa.txt","w"); if(fp==NULL) { printf("File open error!\n"); exit(O); fprintf(fp,"d",a); fclose(fp);
格式化I/O:fprintf与fscanf ❖函数原型: int fprintf(文件指针,格式字符串,输出表列) int fscanf(文件指针,格式字符串,地址表列) ❖功能:按格式对文件进行I/O操作 ❖返值:成功,返回I/O的个数;出错或文件尾,返回EOF 例 fprintf(fp,“%d,%6.2f”,i,t); //将i和t按%d,%6.2f格式输出到fp文件 fscanf(fp,“%d,%f”,&i,&t); //若文件中有3,4.5 ,则将3送入i, 4.5送入t §14.3 文件的读写 #include main() {int a=10; FILE *fp; fp=fopen("d:\\aa.txt","w"); if(fp==NULL) { printf("File open error!\n"); exit(0); } fprintf(fp,"%d",a); fclose(fp); }