400字范文,内容丰富有趣,生活中的好帮手!
400字范文 > 游戏筑基开发之文件操作(C语言)

游戏筑基开发之文件操作(C语言)

时间:2021-01-22 05:57:16

相关推荐

游戏筑基开发之文件操作(C语言)

游戏筑基开发之文件操作(C语言)

1.文件的分类

文件是用于存储信息的载体,是信息的集合。

文本文件:人们可以读懂的文件。

二进制文件:比如exe、bin文件就是二进制文件。

2.文件的打开和关闭

2.1 文件的打开

fopen的头文件是stdio.h返回值 如果打开成功返回句柄 否则返回 NULL每次打开文件需要判断文件句柄是否打开成功FILE* 文件句柄 = fopen(文件路径,文件打开模式);

2.2 文件的关闭

fclose(文件句柄变量名);

2.3 文本文件模式下操作文件

int main(){FILE * pFile = fopen("1.txt","w");if(pFile == NULL){printf("文件打开失败\n");return 0;}fclose(pFile);return 0;}

3.文件操作函数

3.1 fscanf 文本模式读文件

读取的字节数 = fscanf(文件句柄,格式控制字符串,参数列表1…); 和scanf类似

3.2 fprintf 文本模式写文件

写入的字节数 = fprintf(文件句柄, 格式控制字符串,参数列表…); 和 printf类似

3.3 fgets 文本模式读指定字符长度,且遇到\n提前结束

字符串首地址 (失败返回NULL)= fgets(字符缓冲区,读取的长度,文件句柄);

3.4 fputs 文本模式写字符串到文件

fprintf(写入的字符串, 文件句柄);

3.5 fgetc 文本模式从文件读取一个字符

int fgetc(文件句柄);

如果读取成功 返回对应字符的ASCII码 读取失败返回EOF(EOF是一个符号常量表示文件读取出错 值为-1)

3.6 fputc 文本模式写一个字符进入文本

int fputc(写入的字符, 文件句柄);

写入成功 返回写入的字符; 写入失败返回EOF

3.7 ferror 判断文件是否出错

int ferror(文件句柄);

返回值:返回非0表示出错;返回0表示未出错

每次读写文件是回馈出现一个新的ferror返回值,如果不调用则会覆盖;执行fopen是 ferror的默认值为0

3.8 feof判断文件是否结束

int feof(文件句柄);

返回值:0表示文件可读 ,其余为文件不可读

3.9 fflush 刷新缓冲区文件函数

无条件的将缓冲区的数据写入物理设备中,因为缓冲区写入物理设备是有条件的,如果遇到断电是不会自动写入缓冲区的,在程序关闭是会刷新缓冲区,或缓冲区已满是会写入物理设备。

int fflush(文件句柄);

返回值:成功返回0 是否返回EOF

3.10 fread 二进制的文件函数

读取的字节数 = fread(缓冲区数组,读取的字节长度,读取的区块数量(1个区块是读取的字节长度*1),文件句柄);

3.11 fwrite 二进制写文件函数

写入的字节数 = fread(写入的数据,写入的字节长度,写入的区块数量, 文件句柄);

3.12 fseek 文件重定位函数

int fseek(文件句柄,偏移值,偏移位置);

偏移位置: SEEK_SET(文件开头 )、SEEK_END(文件末尾)、SEEK_CUR(当前位置)

返回值:成功返回0;否则返回非0

一般用于二进制文件的操作

3.13 ftell 获取当前文件句柄位置

long ftell(文件句柄);

返回当前文件读取的字节,否则返回-1

基本是配合fseek来使用

4.文件读写操作案例

4.1 读取格式化的文本文件

// 文件内容 4后面没有任何字符如回车、空格等等// 1 2 3 4#include <stdio.h>#include <conio.h>#include <stdio.h>int main(){// 打开文件FILE* pFile = fopen("./test.txt", "r");// 判断文件是否打开成功if (NULL == pFile){printf("OPEN FILE ERROR\n");return 0;}int a, b, c, d;// 从文件中输入4个值fscanf(pFile, "%d%d%d%d", &a, &b, &c, &d);// 输出从文件中读取的值printf("%d-%d-%d-%d", a, b, c, d);int eof = feof(pFile);if (eof != 0)printf("file is no read\n");// 关闭文件fclose(pFile);return 0;}

4.2 写数据进入文件

#include <stdio.h>#include <conio.h>#include <stdio.h>int main(){// 打开文件 注意打开模式FILE* pFile = fopen("./test.txt", "w");// 判断文件是否打开成功if (NULL == pFile){printf("OPEN FILE ERROR\n");return 0;}int a, b, c, d;// 从控制台输入 4个数scanf(pFile, "%d%d%d%d", &a, &b, &c, &d);// 输入到文件中fprintf(pFile, "%d-%d-%d-%d", a, b, c, d);// 关闭文件fclose(pFile);return 0;}

4.3 文本文件的其他操作

#include <stdio.h>#include <conio.h>#include <stdio.h>int main(){// 打开文件FILE* pFile = fopen("./test.txt", "r");// 判断文件是否打开成功if (NULL == pFile){printf("OPEN FILE ERROR\n");return 0;}char buff[1024] = {0 };// 读取一行文本fgets(buff, 1024, pFile);printf("%s\n", buff);// 移动到文件头 SEEK_END是文件末尾fseek(pFile, 0, SEEK_SET);//重新读取文件fgets(buff, 1024, pFile);printf("%s\n", buff);// 关闭文件fclose(pFile);return 0;}

5.文件读写缓冲区的概念

​ ​ 在计算机中文件一般存放在硬盘中,而硬盘的速度比内存满几十上百倍,如果每次数据直接写入硬盘则会导致系统整体发生卡顿,效率低下。于是就引入了缓冲区的概念。在需要把数据写入硬盘之前,先写入在内存中的某一部分,当积累数据达到一定量是,在写入硬盘,就避免了每次读写直接操作硬盘的低效率。

​​ ​ 缓冲区的主要作用是用来匹配设备之间的速度差问题。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。