C语言之文件操作

目录

一、什么是文件?

二、C语言如何操作文件 

 1.操作方式

2.文件指针

        2.1 定义文件指针

      2.2文件的打开与关闭

    2.3文件的顺序读写

      2.3文件的随机读写

总结


一、什么是文件?

在电脑磁盘的上的文件。在程序设计中,分为两种:程序文件数据文件

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

数据文件:程序运行时读写的数据,例如程序运行需要从中读取数据的文件或者输出内容的文件


二、C语言如何操作文件 

 1.操作方式

 在C程序里,文件分为 A.文本文件(存放字符/文字的文件.txt)
                                   B:二进制文件(.data)把结构体的信息写入的文件被称为二进制文件   

对文档的操作方式主要有2种:

                读操作:从文件里面把文件的内容取出来,并输出到屏幕(不会改变文件的内容)
                写操作:把一些内容往文件里面写入(会改变文件的内容)

 注:每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE。 


2.文件指针

         我们已经知道了,C语言对于文件的操作,那我们具体如何操作呢?                                                 我们可以使用文件指针,顾名思义,文件指针是指向文件的指针,存放的是文件首地址。

        2.1 定义文件指针

           创建一个FILE*的指针变量:

FILE* pf;文件指针变量

          定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个         结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变           量能够找到与它关联的文件。
 C语言之文件操作_第1张图片


      2.2文件的打开与关闭

          文件在读写之前,需要打开文件,使用结束后应该关闭文件
          ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件。

//打开文件         
FILE *pf = fopen("要打开的文件名","打开方式");
//关闭文件
int fclose ( pf );

        打开方式,便是读、写等操作

C语言之文件操作_第2张图片

 代码实例:


#include 
int main ()
{
//打开文件  使用"w",如果不存在myfile.txt,则会创建此文件
FILE *pFile = fopen ("myfile.txt","w");
//文件操作
if (pFile!=NULL)
{
//fputs是将字符串输入到文件当中。
fputs ("fopen example",pFile);
//关闭文件
fclose (pFile);
}
return 0;
}

    2.3文件的顺序读写

          在之前的代码里,我们可以看见一个函数fputs,该函数是文本行输出函数,在C程序里,任       何数据不会直接输出到对应的设备,而是会通过三个流,对应地传递过去。

        顺序读写步骤:打开、读取(只能从头开始读写)、关闭

C语言之文件操作_第3张图片

         而同样,有些函数在传输的时候也会有限制,并不适合所有的流。 顺序读写的函数名和传输     限制如下:

C语言之文件操作_第4张图片

举个例子 :

struct S
{
	char name[20];
    int age;
	float score;
};

  //测试二进制的写函数:fread
int main()
{
	struct S s = { 0};
     // 文件使用 “只读” 且是二进制
	FILE* pf = fopen("test.txt", "rb");
	if (NULL == pf)
    {
		perror("fopen");
		return 1;
	}
	//读文件 freed也是二进制输入
	fread(&s, sizeof(struct S), 1, pf);
	printf("%s %d %f\n", s.name, s.age, s.score);

	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

 如代码,重点强调:FILE* 指针访问的是文件信息区的地址,并且这些信息都是存放在结构体       其他函数用法就不一一解释了,可以通过MSDN查找,学习。


      2.3文件的随机读写

             随机读写,就是想读哪个位置就读哪个位置,指哪打哪的意思。

    1.fseek函数         

     根据文件指针的位置和偏移量来定位文件指针

                                文档指针       光标移动位      
使用:int fseek ( FILE * stream, long int offset, int origin )

       origin 的值            光标位置
       SEEK_SET             文件开头
       SEEK_CUR           文件指针当前位置
        SEEK_END             文件结尾

 代码实例:

#include 
int main()
{
	FILE* pFile;
	pFile = fopen("example.txt", "wb");
	fputs("This is an apple.", pFile);
	fseek(pFile, 11, SEEK_SET);
	fputs("sam", pFile);
	fclose(pFile);
	return 0;
}

代码详解图: 

 C语言之文件操作_第5张图片

2.ftell函数

返回文件指针相对于起始位置的偏移量

                       文档指针
long int ftell ( FILE * stream );

 3 rewind
让文件指针的位置回到文件的起始位置

void rewind ( FILE * stream );

       随机读写函数的总结: 

                     第一个函数是控制光标移动                                                                                                                 第二个函数是返回光标移动的偏移量,                                                                                                            第三个函数是光标回到初始位置


总结

           文档操作,主要弄清楚以下问题

           文件的分类,C语言如何访问文档,又该如何操作,文件的信息存放在哪?以什么方式存放。

            上述问题,全在博客之中,有着清晰明了的讲解,一点点深入了解文件 

            

                                                                                                                 ---------来自菜鸟TQ02

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