文件操作 --- 知识点整理

目录

一、文件

二、文件的打开和关闭

2..1文件指针

2.2 文件的打开

2.3 文件的关闭

三、文件的顺序读写

3.1 fputc

3.2 fgetc

3.3 fputs

3.4 fgets

3.5 fprintf

3.6 fscanf

3.7 fwrite

3.8 fread

 四、随机读写

4.1 fseek

4.2 ftell

4.3 rewind


一、文件

1.使用文件我们可以将数据直接存放在电脑的硬盘上,做到数据的持久化。

2.文件分为俩种:程序文件、数据文件

程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj)

可执行程序(windows环境下后缀为.exe)

3.文件名:一个文件需要有一个唯一的文件表示,

例如:c:\code\test.txt

文件名包含3部分:

文件路径c:\code

文件主干:\test

文件后缀 .txt

二、文件的打开和关闭

2..1文件指针

每个被使用的文件都会在内存中开辟一个文件信息区,每个文件信息区都会通过一个FILE*

指针来维护。

2.2 文件的打开

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

filename:要打开文件名称的C字符串

mode:模式

 返回:与文件相关联的文件信息区的地址

2.3 文件的关闭

int fclose ( FILE * stream );

stream:指向指定要关闭的流的 FILE 对象的指针。

返回值: 成功关闭:返回零值。

             失败:返回EOF

int main()
{
	//打开
	FILE* pf = fopen("data.txt","r");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//读写
	//关闭
	fclose(pf);
	pf = NULL;
	return 0;
}

三、文件的顺序读写

3.1 fputc

int fputc ( int character, FILE * stream );

定义:向写入一个字符并前进位置指示器。
字符写在的内部位置指示器指示的位置,然后自动前进一个。

character:要写的字符的int推广,写入时,该值在内部转化为无符号字符

stream: 只想标识输入流的FILE对象的指针

返回值:成功:返回所写字符

              写入错误:返回EOF,并设置错误指示器(ferror)

 每写入一个字符,指针就会往后移动一个位置

 

 

3.2 fgetc
 


int fgetc ( FILE * stream );

定义:返回指定流的内部文件位置指示器当前所指向的字符。然后,内部文件位置指示器将前进到下一个字符。如果流在调用时位于文件末尾,则该函数将返回 EOF 并设置流的文件末尾指示符 (feof)。如果发生读取错误,该函数将返回 EOF 并设置流(ferror的错误指示器。fgetc 和 getc 是等效的,除了 getc 在某些库中可以作为宏实现。

stream:指向标识输入流的FILE对象的指针

返回值:

成功时,将返回字符读取(提升为 int 值)。
返回类型为 int 以适应特殊值 EOF,这表示失败:
如果位置指示器位于文件末尾,则该函数返回 EOF 并设置流的 eof 指示符 (feof)。
如果发生其他读取错误,该函数也会返回 EOF,但会改为设置其错误指示器(ferror)。

3.3 fputs

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

str:写入流里面的字符串
stream:指向标识输入流的FILE对象的指针

返回值:成功时,返回非负值,失败时,返回EOF ,并设置误差指示器(ferror)

 

3.4 fgets

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

str:存储字符串的数组的指针

num:要复制到str中的最大字符数,包括终止符,也就是如果num等于3,是只复制了前2位,第三位为'\0'

stream:指向标识输入流的 FILE 对象的指针。
            stdin 可以用作从标准输入读取的参数。

 

 

3.5 fprintf


 

int fprintf ( FILE * stream, const char * format, ... );//将格式化数据写入流

stream:指向标识输出流的 FILE 对象的指针。

format:包含要写入流的文本的 C 字符串。它可以选择包含嵌入的格式说明符,这些说明符将替换为后续附加参数中指定的值,并按请求进行格式化。

返回值:成功时,将返回写入的字符总数。
              如果发生写入错误,则设置错误指示器(ferror)并返回负数。
              如果在写入宽字符时发生多字节字符编码错误,则 errno 将设置为 EILSEQ 并返回负数。

3.6 fscanf
 

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

定义:从中读取数据,并根据参数格式将它们存储到附加参数所指向的位置。

stream:指向 FILE 对象的指针,对象标识要从中读取数据的输入流。

format:C 字符串,包含一系列字符

返回值:成功时,该函数返回已成功填充的参数列表中的项数。此计数可以与预期的项目数匹配,也可以由于匹配失败、读取错误或文件末尾的范围而减少(甚至为零)。如果发生读取错误或在读取时到达文件末尾,则设置正确的指示器(feof 或 ferror)。而且,如果在成功读取任何数据之前发生任何一种情况,则会返回 EOF。如果在解释宽字符时发生编码错误,则该函数会将 errno 设置为 EILSEQ。

3.7 fwrite
 

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

定义:写到文件中去,写入一个计数元素数组,每个元素的大小为字节,从 ptr 指向中的当前位置的内存块。

ptr:

指向要写入的元素数组的指针,转换为 const void*。

size:

要写入的每个元素的大小(以字节为单位)。
size_t是无符号整数类型。

count:

元素数,每个元素的大小为字节大小
size_t是无符号整数类型。

stream:

指向指定输出流的 FILE 对象的指针。

3.8 fread

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

定义:从流(文件)中读取计数元素数组,每个元素的大小为字节,并将它们存储在 ptr 指定的内存块中。
流的位置指示器按读取的总字节数提前。如果成功,则读取的总字节数为(大小*计数)。

ptr:指向大小至少为(大小*计数)字节的内存块的指针,转换为 void*。

size:要读取的每个元素的大小(以字节为单位)。
size_t是无符号整数类型。

count:元素数,每个元素的大小为字节大小
size_t是无符号整数类型。

stream:指向指定输入流的 FILE 对象的指针。

 

 四、随机读写

4.1 fseek

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

定义:对于以二进制模式打开的流,通过将偏移量添加到由原点指定的参考位置来定义新位置。

对于在文本模式下打开的流,偏移量应为零或先前调用 ftell 返回的值,并且必须SEEK_SET。

stream:指向表示流的FILE对象的指针

offset:

二进制文件:要从偏移的字节数。
文本文件:零或 ftell 返回的值。

origin:

 返回值:

如果成功,该函数返回零。
否则,它将返回非零值。
如果发生读写错误,则设置误差指示器(ferror)。

4.2 ftell
 

long int ftell ( FILE * stream );//获取流中的当前位置

stream:指向标识流的 FILE 对象的指针。

返回值:

成功时,将返回仓位指标的当前值。
失败时,返回 -1L,并将 errno 设置为特定于系统的正值。

4.3 rewind

void rewind ( FILE * stream );

stream:指向标识流的 FILE 对象的指针。

无返回值

 本篇为c语言文件操作的相关内容,如有错误,请评论区多多评论^_^

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值