栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】文件操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】文件操作

【C语言】文件操作

###当数据存放在内存中时,当内存断电后重启,就会发现数据消失,因此我们需要对数据持久化,比如将其存放在磁盘或数据库上,使自己能够随时使用。

在程序设计中,有两种文件:程序文件和数据文件 > 数据文件用来存储信息,程序文件(源程序文件.c 可执行程序.exe)用来执行操作。

文件一般有一个标识名:由 文件路径 + 文件主干 + 文件后缀

c:/code/test.txt	//一个文件只能有一个特殊标识名,以与其他文件区分;
文件类型指针

在操作文件时,每个被使用的文件都会在文件中开辟一个相应的信息区,放置文件相关信息于特定的结构体(struct FILE)中,由一个文件指针(FILE*)指向该结构体,C语言中可以通过操作文件指针来改变文件信息区的内容,操作文件。

FILE* pf; //文件指针变量;
文件打开与关闭

使用文件时,先 打开(fopen) ,使用完成后要 关闭(fclose)

//open a file
FILE* fopen(const char* filname, const char* mode);

//close a file
int close( FILE* stream);
文件打开方式 读文件:
FILE* pf = fopen("text.txt","r");

FILE* pf = fopen("c://user//text.txt","r");

fclose(pf);	
fclose(pf);
写文件
FILE* pf = fopen("text.txt","w");

FILE* pf = fopen("c://user//text.txt","w");


fclose(pf);	
fclose(pf);
文件的文本方式读写 文件的字符方式读写

文件的打开方式决定了对文件的操作方法,主要分为文件的顺序读写与文件的随机读写;

以内存为对象,如果数据由内存移动至文件中,称为 输出/写文件 ;数据由文件移动至内存中,称为 输入/读文件

流:数据在内存、文件、外部设备的移动方法,用户录入数据到流中,之后由流来决定数据的写入方式:

C语言运行过程中,会打开三个流:

  1. 标准输入流(stdout)
  2. 标准输出流(stdin)
  3. 标准错误流(stderr)
fputc()
int fputc(int c, FILE* stream);

 
 //例如:
FILE* pf = fopen("text.txt", "w");
fputc('l', pf);
fputc('i', pf);
fputc('u', pf);
fclose(pf); 
pf = NULL;
fgetc()
int fgetc( FILE *stream );

FILE* pf = fopen("text.txt", "r");
printf("%cn",fgetc(pf));

fclose(pf);
pf = NULL;
fputs()
int fputs( const char *string, FILE *stream );

FILE* pf = fopen("text.txt", "w");
fputs("zhifeiliu", pf);

fclose(pf);
pf = NULL;
fgets()
char *fgets( char *string, int n, FILE *stream );

FILE* pf = fopen("text.txt", "r");
char arr[20] = {0};
fgets(arr, 5, pf);


fclose(pf);
pf = NULL;
文件的格式化方式读写 fprintf()
int fprintf( FILE *stream, const char *format [, argument ]...);


int printf( const char *format [, argument]... );


FILE* pf = fopen("data.txt", "w");
fprintf(pf,"%d  %lf", 10, 20.3);
fclose(pf);
pf = NULL;
fscanf()
int fscanf( FILE *stream, const char *format [, argument ]... );


int scanf( const char *format [,argument]... );	

FILE* pf = fopen("data.txt", "r");
fprintf(pf,"%d  %lf", &a, &b);

fclose(pf);
pf = NULL;
文件的二进制方式读写 fwrite()
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );

FILE* pf = fopen("data.txt", "wb");

int arr[] = {1,23,4,5,4352,6};
fwrite(arr, sizeof(arr), 1, pf);
fclose(pf);
pf = NULL;
fread()
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

FILE* pf = fopen("data.txt", "rb");

int arr[5] = {0};
fread(arr, sizeof(arr), 1, pf);
fclose(pf);
pf = NULL;


文件的随机读写 fseek()

int fseek( FILE *stream, long offset, int origin );
 
ftell()
long ftell( FILE *stream );
rewind()
void rewind( FILE *stream );
文件结束判断 feof()
int feof( FILE *stream );

ferror()
int ferror( FILE *stream );

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/304010.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号