A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 仰望星空的猪 中级黑马   /  2015-11-23 19:09  /  547 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

文件
       文件:存储在外部介质上的数据集合。集合的名称叫文件名。
作用:文件可以保存程序运行结果。

编码分类:ascii文件(文本文件)和二进制文件。
文件操作原理:
1) 文件缓冲区:系统为文件自动的在内存区中为使用的文件开辟的缓冲区。
2) 输入输出流:数据的输入输出。
1 文件操作步骤:
1) 引入头文件 stdio.h
2) 定义文件指针
3) 打开文件
4) 文件读写
5) 关闭文件
2 文件相关函数
字符读写函数:fgetc和fputc
字符串读写函数:fgets和fputs
数据块读写函数:fread 和fwrite
格式化读写函数:fscanf和fprintf
3 文件指针
       FILE *指针变量标识符;
文件指针指向文件在内存的首地址。
1) 文件打开(fopen)
打开文件是建立文件的各种信息,并使文件指针指向该文件,以便进行其他操作。
FILE *fp=NULL;   //定义文件指针并赋值为NULL
fp=fopen(文件名,文件使用方式);
成功返回文件首地址,否则为NULL。
2) 文件关闭(fclose)
断开指针与文件的联系。
fclose(fp);
4文件使用方式
       r  只读
w 只写  创建或者先删后建文件。
a  只写  文件存在追加,不存在创建。换行追加
r+ 读写
w+读写 创建文件或者覆盖文件

a+ 读写 等价a但是可以读。

t  打开文件文件  默认打开文本文件。
b  打开二进制文件

注意
凡是以 r 打开的文件,文件必须存在。
打开文件失败是 返回NULL。
文本文件读入内存时需要将ascii转换为二进制。写入时相反。对二进制读写不需要转换。
5 文件函数使用
1) 字符读写函数
单位:字节
fputc(字符,文件指针);//把字符写入文件。
使用循环写入字符串。

  1. 读取一个字符
  2. fgetc(fp);

  3. char s=fgetc(fp);
  4. while(s!=EOF){  //EOF 文件结束标志
  5. s=fgetc(fp);   //文件指针会自动向后移动
  6. putchar(s);
  7. }
复制代码




rewind(fp)将文件指针重新指向文件首地址。

2) 字符串读写
fputs(字符串,文件指针);
返回值为写入的字节数。

char str[100];
fgets(数组名称;sizeof(str),fp); //一次读取数组的长度个字节
1)文件读取完成后会给字符串数组加 \0  。
2)遇到\n或者EOF读取结束。  每次读取一行。

一个汉字 3个字节
一个字符1个字节

3) 数据块读写函数
fwrite(写入数据的首地址,块大小,块数,文件指针);
fread(数组首地址,块大小,块数,文件指针);

文件与结构体
写结构体
  1. struct Student{
  2. char name[20];
  3. int age;
  4. }stu[10];
  5. fwrite(结构体变量地址,结构体大小,1,fp);

  6. for(int i=0;i<10;i++){
  7. fwrite(&stu[i],sizeof(struct Student),1,fp);

  8. }
复制代码



读结构体
  1. struct Stuent stu2[10];

  2. for(int i=0;i<10;i++){

  3. fread(&stu2[i],sizeof(struct Student),1,fp);

  4. }
复制代码





4) 格式化读写函数

fscanf(文件指针,格式字符串,输入列表);
fscanf(fp,“%d%d”,&i,&j);

fprintf(文件指针,格式字符串,输入列表);
fprintf(fp,“%d%d”,i,j);


5)文件随机读写函数
fseek 移动文件内部的位置指针

fseek(文件指针,位移量,起始点);
位移量:移动的字节    long型数据数字后加L
起始点:从哪开始移动
              文件首部     SEEK_SET  0
              文件当前位置SEEK_CUR  1
              文件末尾       SEEK_END 2
6)文件检测函数
       feof(文件指针)
       判断指针是否指向文件结束位置。 返回值 :结束是1 没结束为0。
       ferror 文件出错检测函数。
      

文件操作实例
简易通讯录 代码见附件







简易通讯录.rar

2.32 KB, 下载次数: 5

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马