c语言 文件处理2 程序环境和预处理
创始人
2024-05-08 06:46:40
0

对比函数

在这里插入图片描述

sprintf(把一个格式化数据转化为字符串)

sscanf (从一个字符串中读一个格式化数据)

struct S
{char arr[10];int age;float f;
};int main()
{struct S s = { "hello", 20, 5.5f };//把这个转化为一个字符串struct S tmp = { 0 };char buf[100] = {0};//sprintf 把一个格式化的数据,转换成字符串sprintf(buf, "%s %d %f", s.arr, s.age, s.f);printf("%s\n", buf);//从buf字符串中还原出一个结构体数据sscanf(buf, "%s %d %f", tmp.arr, &(tmp.age), &(tmp.f));printf("%s %d %f\n", tmp.arr, tmp.age, tmp.f);return 0;
}

文件的随机读写

fseek(文件指针定位)

*int fseek( FILE stream, long offset, int origin );
分别对应 流 偏移量 起始位置

SEEK_CUR当前位置
Current position of file pointer
SEEK_END 文件末尾
End of file
SEEK_SET 文件起始位置
Beginning of file

int main()
{FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读取文件int ch = fgetc(pf);printf("%c\n", ch);//a//调整文件指针fseek(pf, -2, SEEK_END);ch = fgetc(pf);printf("%c\n", ch);//ech = fgetc(pf);printf("%c\n", ch);//f//关闭文件fclose(pf);pf = NULL;return 0;
}

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

long int gtell(FILE*stream)

int main()
{FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读取文件int ch = fgetc(pf);printf("%c\n", ch);//a//调整文件指针fseek(pf, -2, SEEK_END);ch = fgetc(pf);printf("%c\n", ch);//ech = fgetc(pf);printf("%c\n", ch);//fint ret = ftell(pf);printf("%d\n", ret);  偏移量6//关闭文件fclose(pf);pf = NULL;return 0;

rewind(让文件指针的位置回到文件的起始位子)

int main()
{FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读取文件int ch = fgetc(pf);printf("%c\n", ch);//a//调整文件指针fseek(pf, -2, SEEK_END);ch = fgetc(pf);printf("%c\n", ch);//ech = fgetc(pf);printf("%c\n", ch);//fint ret = ftell(pf);printf("%d\n", ret);//让文件指针回到其实位置rewind(pf);ch = fgetc(pf);printf("%c\n", ch);//a  最后打印a因为回到了起始位置//关闭文件fclose(pf);pf = NULL;return 0;
}

文本文件和二进制文件、

在这里插入图片描述

文本文件是将内存里的数据转化为ascii值存入文件

文件读取结束的判定

被错误使用的feof

在这里插入图片描述
在这里插入图片描述
feof返回为真文件结束,如果遇到因文件末尾而结束返回
ferror返回为真就是非0,表示因为文件读取失败而停止


//写代码把test.txt文件拷贝一份,生成test2.txtint main()
{FILE* pfread = fopen("test.txt", "r");if (pfread == NULL){return 1;}FILE* pfwrite = fopen("test2.txt", "w");if (pfwrite == NULL){fclose(pfread);pfread = NULL;return 1;}//文件打开成功//读写文件int ch = 0;while ((ch = fgetc(pfread)) != EOF){//写文件fputc(ch, pfwrite);}if (feof(pfread)){printf("遇到文件结束标志,文件正常结束\n");}else if(ferror(pfread)){printf("文件读取失败结束\n");}//关闭文件fclose(pfread);pfread = NULL;fclose(pfwrite);pfwrite = NULL;return 0;
}

文件缓冲区

在这里插入图片描述


#include 
#include 
//VS2013 WIN10环境测试
int main()
{FILE* pf = fopen("test.txt", "w");fputs("abcdef", pf);//先将代码放在输出缓冲区printf("睡眠10秒-已经写数据了,打开test.txt文件,发现文件没有内容\n");Sleep(10000);printf("刷新缓冲区\n");fflush(pf);//刷新缓冲区时,才将输出缓冲区的数据写到文件(磁盘)//注:fflush 在高版本的VS上不能使用了printf("再睡眠10秒-此时,再次打开test.txt文件,文件有内容了\n");Sleep(10000);fclose(pf);//注:fclose在关闭文件的时候,也会刷新缓冲区pf = NULL;return 0;
}

程序的环境和预处理

在这里插入图片描述
预处理阶段完成的工作
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...