C语言文件操做 (一)

来源:C语言文件操做 (freecplus.net)html

C 语言对文件进行操做以前必须先“打开”文件,操做(读和写)完成后,再“关闭”文件。linux

打开文件 --> 操做文件(文件读写)--> 关闭文件windows

一、文件操做函数

操做文件的时候,C语言为文件分配一个信息区,该信息区包含文件描述信息,缓冲区位置、缓冲区大小、文件读写到的位置等基本信息,这些信息用一个结构体来存放(struct_IO_FILE),这个结构体有一个别名FILE(typedef struct_IO_FILE FILE), FILE结构体和对文件操做的库函数在stdio.h头文件中声明。学习

typedef struct
{
    short level;            // 缓冲区“满”或“空”的程度
    unsigned flags;         // 文件状态标志
    char fd;                // 文件描述符
    unsigned char hold;     // 如缓冲区无内容不读取字符
    short bsize;            // 缓冲区的大小
    unsigned char *buffer;  // 数据缓冲区的位置
    unsigned ar *curp;      // 指针当前的指向
    unsigned istemp;        // 临时文件指示器
    short token;            // 用于有效性检查
}FILE;

1.1 打开文件的函数.net

fopen函数中会动态分配一个FILE结构体大小的内存空间,并把FILE结构体内存的地址做为函数的返回值,程序中用FILE结构体指针存放这个地址。3d

fopen来建立一个新的文件或者打开一个已存的文件,调用fopen函数成功后,返回一个文件指针( FILE *),函数的原型以下:指针

FILE *fopen( const char * filename, const char * mode );

参数filename 是字符串,表示须要打开的文件名,能够包含目录名,若是不包含路径就表示程序运行的当前目录。实际开发中,采用文件的全路径。htm

参数mode也是字符串,表示打开文件的方式(模式)。blog

返回值:打开成功,返回该文件对应的 FILE 类型的指针;打开失败,返回 NULL。故需定义 FILE 类型的指针变量,保存该函数的返回值。可根据该函数的返回值判断文件打开是否成功。

方式

含 义

说 明

r

只读

文件必须存在,不然打开失败。

w

只写

若是文件存在,则清除原文件内容;若是文件不存在,则新建文件。

a

追加只写

若是文件存在,则打开文件,若是文件不存在,则新建文件。

r+

读写

文件必须存在。在只读 r 的基础上加 '+' 表示增长可写的功能。

w+

读写

在只写w的方式上增长可读的功能。

a+

读写

在追加只写a的方式上增长可读的功能。

 

 

1.2 关闭文件的函数

fclose函数除了关闭文件,还会释放FILE结构体占用的内存空间。

函数的原型:

int fclose(FILE *fp);

fp为fopen函数返回的文件指针。

/*
 * 程序名:12-02.c,此程序用于文件打开和关闭简单操做 
*/
#include <stdio.h>
int main(){
	FILE *fp = 0; //定义存放文件指针的变量 
	fp = fopen("D:\\学习\\111.txt", "r"); 
	if ( fp == 0 )
	{
		printf("打开D:\学习\111.txt失败;\n");
		return -1;
	}
	printf("D:\学习\111.txt fp =%p \n", fp);//%p是打印地址的,打印文件的地址
	fclose(fp) ;
}

 

在windows 里面写路径时候用用两个反斜杠"//"或者正斜杠“/”来表示路径,主要不能使用一个反斜杠"\"

windows是两个反斜杠“\\”,也能够使用正斜杠“/”

linux 用正斜杠“/”

注意事情:

1)调用fopen打开文件的时候,必定要判断返回值,若是文件不存在、或没有权限、或磁盘空间满了,都有可能形成打开文件失败。

2)文件指针是调用fopen的时候,系统动态分配了内存空间,函数返回或程序退出以前,必须用fclose关闭文件指针,释放内存,不然后果严重。

3)若是文件指针是空指针或野指针,用fclose关闭它至关于操做空指针或野指针,后果严重。

相关文章
相关标签/搜索