`
VA_wolf
  • 浏览: 10524 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

十一、文件

 
阅读更多

一、概述

定义

说起文件,是指一组相关数据的有序集合。这些数据集的名称叫做文件名。文件通常是存放在外部介质上的,操作系统也是以文件为单位对数据进行管理的,每一个文件都通过唯一的“文件标识”来定位,即文件路径和文件名,当想要使用文件的时候,需要将文件调入内存中。

 

文件的分类

1、  从用户使用的角度看:普通文件和设备文件;

2、  从文件编码和数据的组织方式来看:ASCII码文件和二进制码文件;

3、  C语言对文件的处理方法来看:缓冲文件系统和非缓冲文件系统;

 

 

 

二、文件操作

FILE结构体内部组成

typedef struct

{

         short level;            //缓冲区满或空的程度

         unsigned flags;         //文件状态标识

         char fd;                //文件描述符

         unsigned char hold;     //无缓冲区不读取字符

         short bsize;            //缓冲区大小

         unsigned char *buffer;  //缓冲区位置指针

         unsigned char *curp;    //当前指针指向

         unsigned istemp;        //临时文件指示器

         short token;            //用于有效性检查

}FILE;

 

文件操作方式

1"r".为读而打开文本文件.(不存在则出错)
2
"rb".为读而打开二进制文件
.
3
"w".为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖
)
4
"wb".为写而打开二进制文件
.
5
"a".为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加
)
6
"ab".为在文件后面添加数据而打开一个二进制文件
.
最常用的文件使用方式及其含义如下
:
7
"r+".为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变
)
8
"rb+".为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置
.
9
"w+".首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失
)
10
"wb+".功能与"w+".只是在随后的读写时,可以由位置函数设置读和写的起始位置
.
最常用的文件使用方式及其含义如下
:
11
"a+".功能与"a"相同;只是在文件尾部添加新的数据后,可以从头开始读
.
12
"ab+".功能与"a+"相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置.


13
“rt”     只读打开一个文本文件,只允许读数据
14
“wt”        只写打开或建立一个文本文件,只允许写数据
15
“at”        追加打开一个文本文件,并在文件末尾写数据
16
“rb”       只读打开一个二进制文件,只允许读数据
17
“wb”       只写打开或建立一个二进制文件,只允许写数据
18
“ab”     追加打开一个二进制文件,并在文件末尾写数据
19
“rt+”    读写打开一个文本文件,允许读和写。用fseek确定读写位置,写多少覆盖多少,后面的内容保留。因为磁盘空间是连续的,所以你不能在中间插入,在中间一旦写入就是覆盖与写入内容等长的那些内容。
20
“wt+”    读写打开或建立一个文本文件,允许读写
21
“at+”    读写打开一个文本文件,允许读,或在文件末追加数据
22
“rb+”    读写打开一个二进制文件,允许读和写
23
“wb+”    读写打开或建立一个二进制文件,允许读和写
24
“ab+”     读写打开一个二进制文件,允许读,或在文件末追加数据

 

 

 

一个简单的文件读写程序

#include<stdio.h>

 

 

 

int main()

{

 

         FILE *fp,*fp2;                         //定义文件指针

         if((fp=fopen("C:/read.txt","r"))==NULL)  //打开将要读的文件

         {

                   printf("error!");

         }

         else

                   printf("open read success!\n");

         if((fp2=fopen("C:/write.txt","w"))==NULL)  //打开将要写的文件

         {

                   printf("error!");

         }

         else

                   printf("open write success!\n");

 

         char ch;

         while((ch=fgetc(fp))!=EOF)     //直到文件末尾为止一直写(!feof(fp)

         {

                   putchar(ch);   

                   fputc(ch,fp2);            //写到第二个文件里

         }

         fclose(fp);

         fclose(fp2);

         return 0;

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics