c语言中的文件操作

目录

文件

文件的打开和关闭

标准流

文件指针

文件的打开和关闭

打开函数fopen

关闭函数fclose

文件的读写

fputc函数

fgetc函数

fputs函数

fgets函数

​编辑​编辑

fprintf函数

sprintf函数

fscanf函数

sscanf函数

fwrite函数

fread函数

fseek函数

ftell函数

rewind函数

feof函数和ferror函数

注意事项

文件缓冲区


文件可以将数据持久化保存。

文件

程序文件包含源程序文件,目标文件。

数据文件,以输出和输入为目的。

数据以二进制存储,如果直接输出到外部文件中,就是数据文件。

字符是以ASCII存储,数值可以是二进制或ASCII。

文件名是文件的唯一标识如D:\软件\C\fish_xue\fish_xue

在D盘软件文件夹中的C文件夹中的fish_xue文件夹。

文件的打开和关闭

文件输出和输入需要通过数据流而文件的打开关闭是对流的截取操作。

标准流

stdin——标准输入流

stdout——标准输出流

stderr——标准错误流

文件指针

文件类型的指针(FILE*P)可以使用P来间接找到文件。

文件的打开和关闭

打开函数fopen

FILE*P= fopen (const char* name,const char*mode)

name是指向的文件命

mode是文件的打开模式

r 只读(如果没有目标文件会返回空指针)   w 只写(没有目标文件和创建文件)

a 追加(没有目标文件和创建文件)

rb只读(二进制如果没有目标文件会返回空指针)

wb只写(二进制没有目标文件和创建文件)

ab追加(二进制没有目标文件和创建文件)

r+ 读和写打开文件 (如果没有目标文件会返回空指针)

w+读写创建文件(没有目标文件和创建文件)

rb+读和写打开文件(二进制如果没有目标文件会返回空指针)

wb+读写创建文件(二进制没有目标文件和创建文件)

ab+读写追加(二进制没有目标文件和创建文件)

规律当mode包含 r 时没有目标文件会报错。其他的会创建一个目标文件。

使用w只写创建了一个fish.txt文件

关闭函数fclose

int fclose ( FILE * stream );

关闭打开的文件指针名。

文件的读写

fputc函数

int fputc ( int character, FILE * stream );

只能写一个字符,写的光标是在文件最开始位置,每一次调用光标会后移。

fgetc函数

int fgetc ( FILE * stream );

读取一个字符,成功读取返回ASCII;

如果读到文件末尾或读取失败返回-1(EOF);

只能读一个字符,读的光标是在文件最开始位置,每一次调用光标会后移。

fputs函数

int fputs ( const char * str, FILE * stream );

int fputs(字符串直至/0,FILE*p)

写入一个字符串。会覆盖文件的内容

fgets函数

char * fgets ( char * str, int num, FILE * stream );

char *gets(char* str,int num,FILE*p)读取一行的字符

str放置读取的字符,num最大读取数量(包含\n),p文件。如果num比一行的字符少,那么不打印\n,下一次读取在同一行。

每进行一次光标下一行。

如果读取错误返回NULL。

fprintf函数

格式化输出函数

int fprintf ( FILE * stream, const char * format, ... );

使用和printf函数基本相同,在输出前加文件指针。写入目标文件中

printf是把数据以格式化的形式打印在标准输出流上

fprintf是把数据以格式化的形式打印在指定的输出流上

sprintf函数

int sprintf ( char * str, const char * format, ... );

将格式化的数据转换为字符串。

fscanf函数

格式化的输入函数

int fscanf ( FILE * stream, const char * format, ... );

和scanf函数基本相同,作用是读取文件的数据写入。

scanf是从标准输入流读取格式化数据

fscanf是从指定的输入流读取格式化数据

sscanf函数

int sscanf ( const char * s, const char * format, ...);

在字符串中读取格式数据。

fwrite函数

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

                                写的类型                占多少字节         有多少元素                文件指针

以二进制输出,用于写入文件。

因为是二进制存在txt文件中会乱码。

fread函数

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

以二进制输入,只能针对文件

用于从文件中读取文件

fseek函数

int fseek ( FILE * stream, long int offset, int origin );

                        文件指针            偏移量                   起始位置

用于调整光标位置。

origin的不同填写

SEEK_SET文件的开始
SEEK_CUR文件指针的当前位置
SEEK_END文件末尾

文件末尾包含\n所以从文件末尾查找时要从-1开始

ftell函数

long int ftell ( FILE * stream );

返回文件指针现在位置与起始位置的偏移量。

rewind函数

void rewind ( FILE * stream );

让文件指针回到起始位置。

feof函数和ferror函数

不能用feof的返回值来判断文件是否结束

feof是判断文件结束是不是因为到文件末尾结束。

ferror读取是发生错误

注意事项

文件打开方式要对应,r对应的读取,w对应的写入

文件缓冲区

在内存和硬盘中有缓冲区。

文件先存放在缓冲区,再输入的硬盘。

如果没有缓冲区会出现读写错误。

大小看编译器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值