C语言文件操作

为什么使用文件

在学习C语言的过程中,相信大家都尝试过写一些小的项目,但是这些项目在没有使用文件的
时候,所存储的一些信息都是临时的不能很好的储存下来,所以我们接下来就要尝试去学习
文件,并且知道如何去使用文件,使用文件我们可以将数据直接存放在电脑的硬盘上,做到
了数据的持久化

什么是文件

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

2.1 程序文件

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

2.2 数据文件

文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据
的文件,或者输出内容的文件。
本此讨论的是数据文件。
在以前所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果
显示显示器上。其实有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数
据读取内存中使用,这里处理的就是磁盘上文件。

2.3 文件名

一个文件要有一个唯一的文件标识,以便用户识别和引用。文件名包含3部分:文件路径+
文件名主干+文件后缀,例如: c:\code\test.txt 为了方便起见,文件标识常被称为文
件名。

文件的打开和关闭

3.1 文件指针

缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。每个被使用的
文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件
的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。
该结构体类型是由系统声明的,取名FILE

3.2 文件的打开和关闭

文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。在编写程序的时候,
在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针
和文件的关系。ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件
#include 
int main ()
{
FILE * pFile;
//打开文件
pFile = fopen ("myfile.txt","w");
//文件操作
if (pFile!=NULL)
{
fputs ("fopen example",pFile);
//关闭文件
fclose (pFile);
}
return 0;
}

文件的读写

顺序读写

文件输入输出函数C语言文件操作_第1张图片

随机读写

fseek

根据文件指针的位置和偏移量来定位文件指针。
int fseek ( FILE * stream, long int offset, int origin );

示例:

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

ftell

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

示例:

#include 
int main ()
{
FILE * pFile;
long size;
pFile = fopen ("myfile.txt","rb");
if (pFile==NULL) perror ("Error opening file");
else
{
fseek (pFile, 0, SEEK_END); // non-portable
size=ftell (pFile);
fclose (pFile);
printf ("Size of myfile.txt: %ld bytes.\n",size);
}
return 0;
}

rewind

void rewind ( FILE * stream );

示例:

/* rewind example */
#include 
int main ()
{
int n;
FILE * pFile;
char buffer [27];
pFile = fopen ("myfile.txt","w+");
for ( n='A' ; n<='Z' ; n++)
fputc ( n, pFile);
rewind (pFile);
fread (buffer,1,26,pFile);
fclose (pFile);
buffer[26]='\0';
puts (buffer);
return 0;
}

结尾

以上便是文件操作的大致内容,大家在学习了文件操作以后可以尝试着做一些可以永久
保存下来的项目,要是对我的内容还算满意的话,记得点赞收藏关注走一波哦。

你可能感兴趣的:(c语言,windows,开发语言)