C语言中的文件操作相关函数

C语言中的文件操作相关函数
C语言中的文件操作相关函数

文件的打开与关闭,读与写操作的相关函数,在对文件操作之前,必须定义一个文件指针,这样的话,才能对该文件进行操作。c语言中的文件操作相关函数的头文件都是

#include

FILE * fp;//可以是任何其他指针名

1)open()函数

函数功能:文件打开函数

函数原型:fp=fopen(文件名,使用文件方式);

FILE *fopen(const char *path,const char *mode); //文件名模式

函数说明:如果是当前工作目录下的文件,可以不用加路径名,如果是其他目录下的则需要加路径

函数参数:以mode的方式打开或创建文件

函数返回值:如果成功,将返回一个文件指针,失败则返回NULL(其实就是0)

函数注意:文件名和打开的方式在写的时候,必须用双引号括起来

在Linux 系统中,mode 里面的’b’(二进制)可以去掉,但是为了保持与其他系统的兼容性,建议不要去掉。ab和a+b 为追加模式,在此两种模式下,无论文件读写点定位到何处,在写数据时都将是

在文件末尾添加,所以比较适合于多进程写同一个文件的情况下保

证数据的完整性。

使用文件的方式如下:

“r”(只读):为输入打开一个文本文件对文件进行读操作

“w”(只写):为输出打开一个文本文件对文件进行写操作

“a”(追加): 向文本文件尾添加数据

“rb”(只读):为输入打开有一个二进制文件

“wb”(只写):为输出打开一个二进制文件对文件进行写操作“ab”(追加): 向二进制文件尾添加数据

“r+”(读写):为读写打开一个文本文件

“w+”(读写):为读写建立一个新的文本文件

“a+”(读写): 向文本文件尾添加数据

“rb+”(读写):为读写打开一个二进制文件

“wb+”(读写):为读写建立一个新的二进制文件

“ab+”(读写): 为读写打开一个进制文件

模式读写位置截断原内容创建

rb Y N 文件头 N N

r+b Y Y 文件头 NN

wb N Y 文件头 Y Y

w+b Y Y 文件头 YY

ab N Y 文件尾 N Y

a+b Y Y 文件尾 N Y

2)fclose()函数

函数功能:文件的关闭

函数原型:fclose(文件指针)

int fclose(FILE *stream)

函数返回值:成功关闭文件返回值为0,否则返回EOF(-1);

函数说明:使用完一个文件,以防止再次被误用,关闭,就是指文件指针变量不再指向该文件,防止数据丢失

基于文件指针的读写函数很多,可分为数据块读写、格式化读写、单个字符读写、字符串读写

3)fread()函数

函数功能:数据块读,读取多个数据

函数原型:size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);

fread(buffer,size,count,fp);

函数说明:fread 从文件流stream 中读取nmemb 个元素,写到ptr 指向的内存中,每个元素的大小为size 个字节。

函数注意:所有的文件读写函数都从文件的当前读写点开始读写,读写完以后,当前读写点自动往后移动size*nmemb个字节

函数返回值:返回为1表示读取了size个字节,返回0表示读取不够size字节

4)fwrite()函数

函数功能:数据块写,写入多个数据

函数原型:size_t fwrite(void *ptr, size_t size, size_t nmemb, FILE *stream);

fwrite(buffer,size,count,fp)

函数说明:fwrite 从ptr 指向的内存中读取nmemb 个元素,写到文件流stream 中,每个元素size 个字节

函数返回值:返回所写的数据块的数目,nmemb(count)(实际值)

调用不成功返回值是0

注意:以上,buffer参数,对fread来说,它是读入数据的存放地址,对fwrite来说,是输出数据的地址

示例:

#include

int main()

{

char buf[50] = {'h','e','l','l','o'};

FILE *p;//定义一个FILE 结构体类型的指针p

p = fopen("a.txt", "r+b");//p 这个指针此时就和文件a.txt 关联起来了。

fwrite(buf, 1, 5, p);//把buf 里面的内容写到p 指向的文件中。

char buf1[50] = {0};

fread(buf1, 1, 5, p);

printf("buf1:%s\n", buf1);

fclose(p);//关闭p 代表的文件a.txt

return 0;

}

注意:在Windows下操作的时候,文件路径是双反斜杠”\\”,

因为单个反斜线为转义符,这样打不开文件

#include

int main()

{

char buf[50] = {'h','e','l','l','o'};

char buf1[50] = {0};

FILE *p;//定义一个FILE 结构体类型的指针p

p = fopen("E:\\信盈达School\\C语言\\2017.02.13全日制C语言\\12第12天链表\\5.示例代码\\a.txt", "r+b");//p 这个指针此时就和文件a.txt 关联起来了。

fwrite(buf, 1, 5, p);//把buf 里面的内容写到p 指向的文件中。

fseek(p, 0, SEEK_SET);

fread(buf1, 1, 5, p);

printf("buf1:%s\n", buf1);

fclose(p);//关闭p 代表的文件a.txt

return 0;

}

注意:上面的例子就会发现其实并没有读到任何内容buf1未显示出内容

是因为此时文件指针已经跑到文件末尾了,可以通过在定义一个文件指针的方式,使其执行文件开头,就可以访问到内容

FILE *fp;//定义一个FILE 结构体类型的指针fp

p = fopen("a.txt", "r+b");//fp 这个指针此时就和文件a.txt 关联起来了。

另外一种方式就是文件定位fseek函数

相关主题
相关文档
最新文档