C语言文件的操作方法很多,函数也很多。你看怪不怪下面是边肖为大家带来的C语言文件操作方法。欢迎阅读。
:
目录
1.你为什么使用文件2。什么是文件1。程序文件2。数据文件3。文件名3。文件指针4。文件的打开和关闭。文件的顺序读写。文件的随机读写。文件结束确定。
一、为什么使用文件
当我们编写一些项目时,我们应该存储编写的数据。只有我们自己选择删除数据,数据才会不复存在。这就涉及到数据持久化的问题。对于我们来说,数据持久化的一般方法有:将数据存储在磁盘文件中,存储在数据库中等。通过使用文件,我们可以将数据直接存储在计算机的硬盘上,这使得数据具有持久性。
二、什么是文件
磁盘上的文件是文件。
在编程中,我们一般指两种文件:程序文件和数据文件。
1.程序文件
包含源文件(后缀。c)、目标文件(后缀。windows环境下的obj)和可执行程序(后缀。windows环境下的exe)。
2.数据文件
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序需要从中读取数据的文件或者输出内容的文件。
3.文件名
一个文件应该有一个唯一的文件标识,以便用户可以识别和引用它。
文件名的组成:文件路径文件名主干文件后缀
例如:c:\cyuyan\test.txt
三、文件指针
每个使用过的文件在内存中都有一个对应的文件信息区,用来存储文件的相关信息(文件名、文件状态、当前文件位置等。).这些信息存储在一个结构变量中。该结构由系统和命名文件声明。
VS2013编译环境提供的stdio.h头文件具有以下文件类型声明:
struct _iobuf {
char * _ ptr
int _ cnt
char * _ base
int _ flag
int _ file
int _ charbuf
int _ bufsiz
char * _ tmpfname
};
typedef struct _iobuf文件;
不同C编译器的文件类型包含不同的内容,是相似的。
为文件*创建指针变量:
FILE * pf//文件指针变量
定义的pf是一个指针变量,它指向文件类型的数据。这样pf就可以指向某个文件的文件信息区(结构变量)。可以通过文件信息区中的信息访问该文件。也就是说,可以通过文件指针变量找到与之关联的文件。
四、文件的打开和关闭
写程序的时候,打开一个文件,会返回一个FILE*的指针变量指向文件,相当于建立了指针和文件的关系。
fopen-打开文件
fclose-关闭文件(文件在使用后必须关闭以防止数据丢失)
//打开文件
FILE *fopen( const char *filename,const char * mode);
//filename-文件名打开模式-文件访问模式
//关闭文件
int fclose(FILE * stream);
的常见文件访问模式如下:
例如:
# includestdio.h
#includeerrno.h
int main()
{
//打开文件
FILE* pf=fopen('data.txt ',' w ');
if (pf==NULL)
{
printf('%s\n ',strerror(errno));
返回;
}
//使用文件
//关闭文件
fclose(pf);
pf=NULL
返回0;
}
五、文件的顺序读写
功能的详细说明:
从流中读取一个字符
int fgetc(FILE * stream);
指向文件结构的指针
fputc-将字符写入流中
int fputc( int c,FILE * stream);
c-要写入的字符流-指向文件结构的指针
从流中获取一个字符串
char *fgets( char *string,int n,FILE * stream);
字符串-数据的存储位置n-要读取的最大字符数流-指向文件结构的指针
fputs-向流中写入一个字符串
int fputs( const char *string,FILE * stream);
字符串-输出字符串流-指向文件结构的指针
FSF-从流中读取格式化数据
int fscanf( FILE *stream,const char *format [,argument ].);
stream-指向文件结构格式的指针-格式控制字符串参数-可选参数
fprintf-将格式化的数据打印到流中
int fprintf(文件*流,常量字符*格式[,参数].);
stream-指向文件结构格式的指针-格式控制字符串参数-可选参数
从文件中读取二进制数据
size_t fread( void *buffer,size_t size,size_t count,FILE * stream);
缓冲区-数据大小的存储位置-项目大小(以字节为单位)计数-要读取的最大项目数流-指向文件结构的指针
fwrite-以二进制形式将数据写入流。
size_t fwrite( const void *buffer,size_t size,size_t count,FILE * stream);
缓冲区-数据大小的存储位置-项目大小(以字节为单位)计数-要读取的最大项目数流-指向文件结构的指针
scanf——从标准输入流(stdin)格式化输入的功能
printf——在标准输出流(stdout)上执行打印格式的函数
FSF-你可以从标准输入流(stdin)/指定的文件流中读取格式化的数据。
fprintf-以格式化的方式将数据输出到标准输出流(stdout)/指定的文件流。
你可以从一个字符串中提取(转换)格式化的数据。
sprintf——将格式化数据转换成字符串。
六、文件的随机读写
fseek
根据文件指针的位置和偏移量。
int fseek( FILE *stream,long offset,int origin);//将文件指针移动到指定位置
流-指向文件结构偏移量的指针-起始字节数原点-起始位置
fseek的使用
ftell
返回文件指针从起始位置的偏移量。
long ftell(文件*流);
ftell的使用:
rewind
将文件指针的位置返回到文件的开头。
void rewind(文件*流);
七、文件结束判定
Feof函数:
注意:在文件读取过程中,feof函数的返回值不能直接用来判断文件是否完成。而是用来判断文件读取结束时是读取结束失败还是遇到文件尾结束。
1.文本文件读取是否结束,判断返回值是EOF(fgetc)还是NULL(fgets)。
Fgetc确定返回值是否为EOF,fgets确定返回值是否为NULL。
2.判断读取二进制文件的结束,并判断返回值是否小于实际要读取的数目。
Fread判断返回值是否小于实际要读取的数目。
文件示例:
二进制文件的示例:
关于C语言超详细讲解文件操作的这篇文章到此为止。有关C语言文件操作的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。