第五章磁盘数据存储 ◇5.1将数据写入文件 心52文件读写分类函数 53文件定位函数
❖ 5.1 将数据写入文件 ❖ 5.2 文件读写分类函数 ❖ 5.3 文件定位函数 第五章 磁盘数据存储
5.将数据写入文件 在第四章中我们学习了结构体类型,可以用结构体 数组存放学生信息,但这种存储是暂时的,当程序结束 运行,这些数据也就消失了,为了长期保存这些数据,我 们可以将它们存储到硬盘上,如果需要使用这些数据, 再从硬盘上将它们读出来,这样数据就可以重复使用了 第五章我们要学习的主要内容是: 如何将数据写入文件 如何从文件中读取数据
在第四章中我们学习了结构体类型, 可以用结构体 数组存放学生信息, 但这种存储是暂时的, 当程序结束 运行, 这些数据也就消失了, 为了长期保存这些数据, 我 们可以将它们存储到硬盘上, 如果需要使用这些数据, 再从硬盘上将它们读出来, 这样数据就可以重复使用了 第五章我们要学习的主要内容是: ➢ 如何将数据写入文件 ➢ 如何从文件中读取数据 5.1 将数据写入文件
51将数据写入文件 例5-1将字符AZ写入文件保存起来 #include #include void main( { char ch;FIE“fp:;∥定义一个文件指针变量 p= fopen(" letter dat","w");∥打开文件操作 if(fp=NULL)∥判断文件打开是否成功 i printf(Opening file error! In") exit(O); for(ch=a; ch<=z, ch++) fputc(ch,fp);∥将字符ch写入到文件中 fclose(fp);∥关闭文件
5.1 将数据写入文件 例5-1 将字符’A’—’Z’写入文件保存起来 #include #include void main( ) { char ch; FILE *fp; fp=fopen("letter.dat", "w"); if (fp==NULL) { printf("Opening file error! \n"); exit(0); } for (ch='A'; ch<='Z'; ch++) fputc(ch, fp); fclose(fp); } // 定义一个文件指针变量 // 打开文件操作 // 判断文件打开是否成功 // 将字符ch写入到文件中 // 关闭文件
5.将数据写入文件 使用文件的必要步骤: 1.定义文件指针变量,文件类型FIE是在 stdio. h头文件 中声明的,可以直接使用 2.打开文件,并判断是否能正确打开文件,如果打开文 件失败,则退出程序 3.向文件写入数据,或从文件读取数据,这是最重要的 文件操作步骤 关闭文件
➢ 使用文件的必要步骤: 1. 定义文件指针变量, 文件类型FILE是在stdio.h头文件 中声明的, 可以直接使用 2. 打开文件, 并判断是否能正确打开文件, 如果打开文 件失败, 则退出程序 3. 向文件写入数据, 或从文件读取数据, 这是最重要的 文件操作步骤 4. 关闭文件 5.1 将数据写入文件
5.将数据写入文件 文件的概念:指存储在外部介质上的数据的集合 操作系统是以文件为单位对数据进行管理的。如果想使 用存在磁盘上的数据,必须先按文件名找到指定的文件,然后 再从文件中读取数据;如果想在磁盘上存储数据,也必须先建 立一个文件,再向它写入数据。 文件除了包括磁盘上存储的内容外,从操作系统的角度看 与主机相连的各种输入输出设备也是文件。 例如:键盘是输入文件,显示器是输出文件。 文件的分类 C语言把文件看作是一个字节的序列,即文件是由 个一个字节的数据顺序组成的。根据数据的组织形式 把文件分为两类:文本文件和二进制文件
➢ 文件的概念: 指存储在外部介质上的数据的集合 操作系统是以文件为单位对数据进行管理的。如果想使 用存在磁盘上的数据, 必须先按文件名找到指定的文件, 然后 再从文件中读取数据; 如果想在磁盘上存储数据, 也必须先建 立一个文件, 再向它写入数据。 文件除了包括磁盘上存储的内容外, 从操作系统的角度看 与主机相连的各种输入输出设备也是文件。 例如: 键盘是输入文件, 显示器是输出文件。 ➢文件的分类 C语言把文件看作是一个字节的序列, 即文件是由 一个一个字节的数据顺序组成的。根据数据的组织形式 把文件分为两类: 文本文件和二进制文件。 5.1 将数据写入文件
5.将数据写入文件 文本文件(ASCI文件):每个字节存放一个字符(即其ASCI码) 优点:便于对字符进行处理,可以直接输出字符形式 缺点:占用存储空间较多,对于数值型数据,其二进制形式与 ASCI码形式转换需要时间 二进制文件:数据按其在内存中的存储形式存放在磁盘上 优点:节省空间,输入输出速度快 缺点:不能直接输出字符形式 设有一整数2460,它在内存中的存储形式:000000 2460在文本文件中的存储形式: 00110010001101000011011000110000 2460在二进制文件中的存储形式:0000100100
设有一整数2460, 它在内存中的存储形式: 0000 1001 1001 1100 2460在文本文件中的存储形式: 0011 0010 0011 0100 0011 0110 0011 0000 2460在二进制文件中的存储形式: 0000 1001 1001 1100 ▪ 二进制文件:数据按其在内存中的存储形式存放在磁盘上 优点: 节省空间 , 输入输出速度快 缺点: 不能直接输出字符形式 5.1 将数据写入文件 ▪ 文本文件(ASCII文件): 每个字节存放一个字符(即其ASCII码) 优点: 便于对字符进行处理, 可以直接输出字符形式 缺点: 占用存储空间较多, 对于数值型数据,其二进制形式与 ASCII码形式转换需要时间
5.将数据写入文件 文件类型指针 要使用一个文件需要有一定的信息,如文件当前的读写 位置,与文件对应的内存缓冲区地址,文件的操作方式等。 这些信息都存放在“文件信息区”中,“文件信息区”是一 績楚使龛:基枃体类褶串委錾宮X,类型名为FLE 注意: 1.只有通过文件指针变量才能调用相应的文件 2.有n个文件就要定义n个文件指针变量,分别对应各个文件 3FILE必须大写
➢文件类型指针 要使用一个文件需要有一定的信息 , 如文件当前的读写 位置, 与文件对应的内存缓冲区地址, 文件的操作方式等。 这些信息都存放在“文件信息区”中 , “文件信息区”是一 个 结构体变量 , 其结构体类型由系统定义, 类型名为 FILE ➢定义形式: FILE * 指针变量名 ; 注意: 1. 只有通过文件指针变量才能调用相应的文件 2. 有n个文件就要定义n个文件指针变量, 分别对应各个文件 3. FILE必须大写 5.1 将数据写入文件
5.将数据写入文件 文件的打开 1. fopen函数 格式: fopen(文件名,文件使用方式) fopen函数有返回值,返回值是一个地址,即被打开 文件的“文件信息区”的起始地址,使用时应将返回 爷E 个文件指针变需要打开的文件名 fp= fopen(“file1”,“r”); 让哪个指针变量 使用文件的方式(读或写) 指向被打开的文件
一、 文件的打开 1. fopen函数 格式: fopen ( 文件名 , 文件使用方式 ) ; fopen函数有返回值, 返回值是一个地址 , 即被打开 文件的“文件信息区”的起始地址 , 使用时应将返回 值 赋给一个文件指针变量需要打开的文件名 让哪个指针变量 使用文件的方式(读或写) 指向被打开的文件 例 FILE *fp ; fp = fopen ( “file1” , “r” ) ; 5.1 将数据写入文件
5.将数据写入文件 2.打开文件的方法 打开文件时,因使用方式不对或其他原因,可能会使 打开文件操作失败,这时 fopen函数的返回值是NULL, 所以在打开文件时通常会判断一下打开操作是否成功 例if(印p= fopen(“ fille”,“r”)==NULL) { printf(“ Can not open this file!n”); exit(0); 说明:exit函数的作用是关闭所有文件,结束程序, 并返回操作系统,也可写成exi(); 注意:使用exi函数要包含头文件
2. 打开文件的方法 打开文件时 , 因使用方式不对或其他原因, 可能会使 打开文件操作失败 , 这时fopen函数的返回值是NULL, 所以在打开文件时通常会判断一下打开操作是否成功 例 if ( ( fp =fopen(“file1”, “r”) ) = = NULL ) { printf(“Can not open this file!\n”) ; exit( 0 ) ; } 说明: exit 函数的作用是关闭所有文件, 结束程序, 并返回操作系统, 也可写成 exit ( ) ; 注意: 使用exit函数要包含头文件 5.1 将数据写入文件
5.将数据写入文件 3.文件使用方式 (1)“r”与“rb”只读 以此方式打开文件时,该文件必须已经存在,如不存在将出错 打开文件后只能从文件中读数据,当前读写位置位于文件开头 (2)“w”与“wb只写 以此方式打开文件时,如有同名文件(即文件已存在),则将原有 文件删除并建立一个新文件;如没有同名文件(即文件不存在,则 建立一个新文件.打开文件后只能向文件中写数据,当前的读写 位置位于文件开头 (3)“a”与“ab”追加 以此方式打开文件时,如有同名文件,则将当前读写位置位于 文件末尾,可以追加数据;如无同名文件,则建立一个新文件 (4)带“+”号的形式:表示即能读又读写
3. 文件使用方式 (1) “r”与“rb” 只读 以此方式打开文件时, 该文件必须已经存在, 如不存在将出错. 打开文件后只能从文件中读数据, 当前读写位置位于文件开头. (2) “w”与“wb” 只写 以此方式打开文件时, 如有同名文件(即文件已存在), 则将原有 文件删除并建立一个新文件; 如没有同名文件(即文件不存在), 则 建立一个新文件. 打开文件后只能向文件中写数据, 当前的读写 位置位于文件开头. (3) “a”与“ab” 追加 以此方式打开文件时, 如有同名文件, 则将当前读写位置位于 文件末尾, 可以追加数据; 如无同名文件, 则建立一个新文件 (4) 带“+”号的形式: 表示即能读又读写 5.1 将数据写入文件