码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-04-18 10:56:56      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:mic   printf   evel   文本   mamicode   open   临时   文件流   结构   

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);    
}

 

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

标签:mic   printf   evel   文本   mamicode   open   临时   文件流   结构   

原文地址:https://www.cnblogs.com/htj10/p/10728143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!