C中文件的输入输出与C++的文件流

时间:2019-04-18
本文章向大家介绍C中文件的输入输出与C++的文件流,主要包括C中文件的输入输出与C++的文件流使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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;
注:不同的编译器的FILE类型略有不同。例如,VC6.0中
struct _iobuf {
        char *_ptr;
        int   _cnt;
        char *_base;
        int   _flag;
        int   _file;
        int   _charbuf;
        int   _bufsiz;
        char *_tmpfname;
        };
typedef struct _iobuf FILE;

一般使用文件类型指针,FILE* fp(注:它指向内存中的文件信息区(即FILE)的开头,而不是指向外部介质上的数据文件的开头)。
FILE* fp;
fp = fopen("test.txt","w");//以只写的方式打开文件
...
fclose(fp);//关闭文件

文件打开方式 若指定文件不存在
"r"(只读) 出错
"w"(只写) 建立新文件
"a"(追加) 出错
"rb"(二进制文件的只读) 出错
"wb"(二进制文件的只读) 建立新文件
"ab"(二进制文件的追加) 出错
"r+"(读写) 出错
"w+"(读写) 建立新文件
"a+"(读写) 出错
"rb+"(读写) 出错
"wb+"(读写) 建立新文件
"ab+"(读写) 出错

注:加b的表示对二进制文件操作,默认(不加b)对文本文件操作。

常用下面的方法打开一个文件

if((fp=fopen("filename","r"))==NULL)
{
  printf("打开文件失败!");
  exit(0);    
}