C语言程序设计 利用文件保存数据 |
您所在的位置:网站首页 › 排序的函数c语言怎么写 › C语言程序设计 利用文件保存数据 |
1 C文件的有关概念
1.1 什么是文件
在进行C运用程序设计中,主要用到两种文件: (1)程序文件。包括程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为.exe)等,用来存放程序的。 (2)数据文件。供程序运行时读入内存的数据。 文件指存储在外部介质上数据的集合。 输入输出是数据传送的过程,输入输出形象地称为流,即输入输出流。流表示了信息从源到目的的流动。 1.2 文件名文件标识包括三部分: (1)文件路径。表示文件在外部存储设备中的位置。 (2)文件名主干的命名规则遵循标志符的命名规则。 (3)后缀用来表示文件的性质,一般不超3个字符,如:.doc,.txt… 1.3 文件的分类数据文件可分为ASCII文件和二进制文件。ASCII文件又称文本(txt)文件。 1.4 文件缓冲区C语言采用缓冲文件系统处理文件,缓冲文件系统是指系统自动地在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区。 C编译系统提供了一些标准输入输出函数,用来对文件进行读写。 1.5 文件类型指针文件类型指针,简称文件指针。 定义FILE结构体类型的信息包含在头文件“stdio.h”中。在程序中可以直接用FILE类型名定义变量。如: FILE f;//类比int a;定义一个指向文件型数据的指针变量: FILE *fp;定义fp为一个指向FILE类型变量的指针变量。使fp指向某一个文件的文件信息区,通过文件信息区中的信息能够访问该文件,即通过文件指针变量能够找到与它相关的文件,将这种指向文件信息区的指针变量称为指向文件的指针变量。 指向文件的指针变量是指向内存中的文件信息区的开头。 2 文件的打开和关闭对文件读写之前应该打开文件,在使用结束之后应关闭该文件。 打开是指为文件建立相应的信息区和文件缓冲区。 关闭是指撤销文件信息区和文件缓冲区。 2.1 用fopen函数打开数据文件fopen函数的调用方法为 fopen(文件名,使用文件方式);例如: fopen("a1","r");表示要打开名字为“al”的文件, 使用文件的方式为“读入”(r代表read, 即读入) 。fopen函数的返回值是指向al文件的指针(即al文件信息区的起始地址) 。 通常将fopen函数的返回值赋给一个指向文件的指针变量。如: FILE *fp; fp=fopen("a1","r");fp指向了a1文件。 使用文件的方式 编译系统先检查打开的操作有否出错, 如果有错就在终端上输出“can not open this file”。exit函数的作用是关闭所有文件, 终止正在执行的程序, 待用户检查出错误, 修改后再运行。 2.2 用fclose函数关闭文件关闭文件用fclose函数,fclose函数形式为: fclose(文件指针);例如: fclose(fp);前面曾把打开文件(用fopen函数) 时所带回的指针赋给了fp,现在把fp指向的文件关闭,此后fp不再指向该文件。 应该养成在程序终止之前关闭所有文件的习惯,如果不关闭文件可能会丢失数据。 fclose函数也带回一个值, 当顺利地执行了关闭操作, 则返回值为0; 否则返回EOF(一1) 。 3 文件的顺序读取顺序读写,对文件读写数据的顺序和数据在文件中的物理顺序是一致的。 3.1 向文件读写字符读写一个字符的函数 运行结果: 通过函数fgets和fputs一次读写一个字符串。 其中n为要求得到的字符个数,但实际上只从fp指向文件中读入n-1个字符,然后在最后加一个’\0’字符。 (2)用fputs函数可以向指定的文件输出一个字符串。如: fputs("China",fp);字符串末尾的’\0’不输出。 (3)fgets函数,第一个字符f代表文件(file),中间的get是“取得”,最后的字母s代表字符串(string),含义是“从文件中取得字符串”。fgetc函数,最后一个字符是c(character),表示读写一个字符。 (4)gets函数和puts函数以终端为读写对象,fputs函数和fputs函数以指定的文件作为读写对象。 例题: 从键盘读入若干个字符串(fgets),对它们按字母大小顺序排序,然后把排好序的字符串送到磁盘文件中保存。 思路: (1)从键盘读人n个字符串,存放在一个二维字符数组中、每一个一维数组存放一个字符串;(2)对字符数组中的n个字符串按字母顺序排序,排好序的字符串仍存放在字符数组中; (3)将字符数组中的字符串顺序输出。 编写程序: #include #include #include int main(){ FILE *fp;//定义指向文件的指针变量fp char str[3][10],temp[10];//定义3行10列字符串二维数组str和临时的一维数组temp int i,j,k,n=3; printf("enter strings:\n");//提示输入字符串 for(i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |