文件操作函数

FILE* fopen(const char “文件名”,"操作字母")

 

打开文件函数

打开失败返回NULL

打开成功反回指向打开文件的文件指针。

 

文件名之前可以加上该文件的绝对路径

要注意\要有两个才是单纯的\字符,不然是转意字符。

 

操作字母

r:读取文件

 

w:编写文件(编写文件的时候,如果编写文件之前有内容,之前的内容会被清空

 

a:追加文件,该操作字母写时,只能在原有文件内容之后写

 

int fclose(FILE*p)

关闭文件函数

 

关闭成功返回0,失败返回EOF

 

int fputc

(const char p1[要写入的字符],FILE*p2[指向要写入的文件的指针])

是写入一个字符函数

写入成功返回写入的ASCII码值,失败返回EOF

 

 

int fgetc(FILE*p)

读取一个字符。

 

读取成功返回读取到的字符

读取失败返回EOF

 

每次使用fgetc函数文件读写指针会自动向后走一个字节。

文件中有abcdef

如果使用3次fgetc函数,就会读取出abc

而不是aaa

 

int fputs

(const char*p1[要写入的字符串的首地址],FILE*p2[指向要写入的文件的指针])

是字符串写入函数

 

写入成功返回所写的最后一个字符,失败返回EOF

 

char* fgets

(char*str,int num,FILE*p)

字符串读取函数

 

读取成功返回 实参str

读取失败返回 NULL

 

str为读取的字符串存储的位置的首地址

 

num为最多读取的字符个数+1(因为它读取的时候会自动读取一个\0)

 

若在读到num—1个字符之前遇到换行符/文件结束标志EOF,则停止读取,系统自动添加\0,若有换行符则将换行符保留(换行符在\0之前),EOF不保留

 

int fprintf

(FILE*p,格式控制字符,输出项)

格式写入文件函数(使用方式除了多了一个FILE的指针参数以外与printf没什么区别)

 

写入成功返回写入的数据的个数,失败返回负数

文件操作函数_第1张图片

 

fscanf

(FILE*p,“格式控制字符”,读取项)格式读取文件函数(使用方式除了多了一个FILE的指针参数以外与scanf没什么区别)

 

fscanf如果遇到空格和换行符将会结束对一个变量的匹配(和scanf一样)

文件操作函数_第2张图片

 

unsignd int fwrite

(const void*str,unsined int size ,unsined int count,FILE *p)

二进制写入文件函数

 

str为要写入数据的首地址。

size为要写入的单个数据的字节

count为要写入数据的个数。

p指向要被写入的文件

文件操作函数_第3张图片

 

unsignd int fread

(const void*str,unsined int size ,unsined int count,FILE *p)

二进制读取文件函数

 

读取成功返回读取成功的数据的个数

 

str为读取数据放入位置的首地址。

size为要读取的单个数据的字节

count为要读取数据的个数。

p指向要被读取的文件 

 

int fseek

(FILE*p,long 偏移量,自定起始位置)

文件读写指针定位,将文件读写指针重新定位,只定不读

 

设置成功返回0,失败返回—1

 

起始位置分三种

SEEK_SET/0  文件最开头[第一个字符]

SEEK_CUR/1 文件指针当前所处位置

SEEK_END/2 文件最末尾[指向文件最后一个字符的后一个字节]

 

偏移量是以文件指针所指位置为0,左减右加

 

 

long int ftell(FILE*p)

 

返回当前文件读写指针相对于文件的起始位置的偏移量,失败返回—1

[这里的起始位置只指文件最开头。]

 

 

void rewind(FILE*p)

 

让当前文件读写指针返回到文件的起始位置

[这里的起始位置只指文件最开始]

 

 

文件读取结束的判定

 

牢记:在文件读取过程中,不能用feof(FILE*p)函数的返回值直接用来判断文件的是否结束

因为feof是应用于当文件读取结束的时候,

判断是否是因为遇到文件尾结束。

如果是返回值就为真。

 

1.文本文件读取是否结束,判断返回值是否为EOF ( fgetc),或者NULL ( fgets )

如果是就读取结束了

 

2.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。

如果小于就读取结束了

 

ferror(FILE*p)

 

判断读取的时候是否遇到了错误,如果返回值为真,就说明是遇到错误而结束读取

 

文件缓冲区

 

ANSIC标准采用缓冲文件系统处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块”文件缓冲区"。 

从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐 个地将数据送到程序数据区(程序变量等) .

缓冲区的大小根据C编译系统决定的。

文件操作函数_第4张图片

 

fflush(FILE*p)

刷新p指向的文件的缓冲区

并将缓冲区的数据进行处理(读取/写入)

 

fclose(FILE*p)关闭文件时也会刷新p指向的文件的缓冲区

并将缓冲区的数据进行处理(读取/写入)

 

你可能感兴趣的:(c语言)