【C语言进阶】文件操作

这篇博客详细介绍了C语言中的文件操作,包括文件的使用原因、类型、文件名,以及如何打开和关闭文件。重点讲解了文件的顺序读写,如fgetc、fputc、fgets、fputs、fprintf、fscanf等函数的使用,并探讨了二进制文件读写、随机读写、文件结束判定和文件缓冲区的知识。
摘要由CSDN通过智能技术生成

目录

为什么使用文件

什么是文件

程序文件

数据文件

文件名

文件的打开和关闭

文件指针

文件的打开和关闭 

文件的顺序读写 

函数介绍

字符输入函数:fgetc( ) 

字符输入函数:fputc( )  

文本行输入函数: fgets( ) 

文本行输出函数: fputs( ) 

格式化输出函数fprintf()

 格式化输入函数fscanf( )

二进制输出函数fwrite( ) 

 二进制输入函数:fread( )

 printf fprintf sprintf ; scanf fscanf sscanf 对比

sprintf()函数

 sscanf()函数

文件的随机读写

fseek() 函数

ftell()函数 

 rewind()函数

 文本文件和二进制文件

文件读取结束的判定 

被错用的feof 

文件缓冲区


为什么使用文件

我们都知道,通常情况下,程序的结束也就意味着里面存储的数据将会被销毁,但是有些情况下我们需要保存数据,那就要用到文件了,例如我们要做一个通讯录系统,我们肯定是想要输入的联系人的信息保存下来,这时候就要用文件来保存数据。使用文件我们可以将数据直接存放在电脑的硬盘上,做到数据的持久化。

什么是文件

硬盘上的文件就是文件。在程序设计中,我们一般讲的的文件有两种(从文件功能的角度来分类):程序文件、数据文件 。

程序文件

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

数据文件

文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件或者输出内容的文件 。本篇博客也是主要将数据文件。

文件名

一个文件要有唯一的标识,以便使用和识别。文件名包括3个部分:文件路径 + 文件名主干 + 文件后缀。例如:c:\code\test.txt 。(文件路径指的是从盘符到该文件所经历的路径中个符号名的集合)

文件的打开和关闭

文件指针

缓冲文件系统中,关键的概念是“文件类型指针”,简称文件指针。 

缓冲文件系统后面会讲,你若想要先了解可以翻到博客结尾。

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件的状态、文件的位置等)。这些信息是保存在一个结构体变量中。该结构体类型是有系统声明的,取名为FILE。(不同的编译器的FILE类型包括的内容不完全相同,但是大同小异。) 

每打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息。一般都是通过一个FILE的指针来维护这个FILE结构的变量。

例:

FILE* pf//文件指针变量

 定义pf是一个指向FILE类型数据的指针变量,可以是pf指向某个文件的文件信息区(一个结构体变量)。通过该文件信息区的信息就能够刚问该文件。也就是说,通过文件指针变量能够找到与它关联的文件。

文件的打开和关闭 

文件在读写之前先要打开文件,应用结束后也要关闭文件 。

打开文件使用的函数为 fopen()

函数原型:FILE* fopen( const char* filename, const char* mode) 

filename:文件名。

mode: 文件使用的方式。

FILE* :返回一个文件指针。 

关闭文件使用的函数 fclose( )

函数原型: int fclose( FILE* stream )

stream :指向文件结构体的指针。

例:

FILE* pf = NULL;

//打开文件
pf = fopen("test.txt", "w");

//关闭文件
fcolse(pf);
pf = NULL;

mode的取值:

例: 

#include<stdio.h>

int main()
{
	FILE* pf = NULL;
	//打开文件
	pf = fopen("test.txt", "w");//只读;当指定文件不存在时,自动创建一个新的文件
	if (NULL == pf)//判断是否打开失败
	{
		perror("fopen:");//出错原因
		return 1;
	}
	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

 

可以看出在程序执行后创建了一个.txt的文本文件。

文件的顺序读写 

函数介绍

在C语言中,术语流(stream)表示任意输入的源或者任意输出的目的地。许多小型程序都是通过一个流(通常和键盘有关)获得全部的输入,并且通过另外一个流(通常和屏幕有关)写出全部的输出 。简单一点就是讲程序通过流来输出、出入。

我们的程序一般都要包含<stdio.h>, 这个头文件里有三个标准流可以直接使用,不用声明,也不用打开和关闭,也就是说当程序运行起来这三个流是默认打开的。它们是:

字符输入函数:fgetc( ) 

函数原型:int fgetc( FILE* stream)

 stream: 指向文件结构体的指针

返回类型为int 当读入错误或文件结尾返回EOF.

 使用:

这里采用只读,所以要先创建一个文件。

#include<stdio.h>

int main()
{
	FILE* pf = NULL;
	//打开文件
	pf = fopen("test05.txt", "r");

	if (pf == NULL)//判断文件是否打开成功
	{
		perror("fopen:");
		return 1;
	}
	//读取文件
	int ch = 0;
	while ((ch = fgetc(pf)) != EOF)
	{
		printf("%c ",(char)ch);
	}
	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

运行结果:

字符输入函数:fputc( )  

 函数原型:int fputc( int c, FILE*stream)

c : 写入的字符

stream: 指向文件结构体的指针

返回类型为int,当写入失败时返回EOF

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值