当前位置: 首页 > news >正文

如何查网站是那家做的桂林旅游几月份去最好

如何查网站是那家做的,桂林旅游几月份去最好,怎样卸载下载的wordpress,校园网站建设合同百度文库文章目录 一、为什么使用文件二、什么是文件1.程序文件2.数据文件3.文件名 三、文件的打开与关闭1.文件指针2.文件的打开和关闭fopen 与 fclose 四、文件的顺序读写01 字符输出函数#xff1a;fputs02 字符输入函数#xff1a;fgetc03 文本行输出函数#xff1a;fputs04 文本… 文章目录 一、为什么使用文件二、什么是文件1.程序文件2.数据文件3.文件名 三、文件的打开与关闭1.文件指针2.文件的打开和关闭fopen 与 fclose 四、文件的顺序读写01 字符输出函数fputs02 字符输入函数fgetc03 文本行输出函数fputs04 文本行输入函数fgets05 格式化输出函数fprintf06 格式化输入函数fscanf07 二进制输出函数fwrite08 二进制输入函数fread 五、 文件的随机读写01 文件指针定位函数fseek02 返回偏移量函数ftell03 文件指针回到起始位置函数rewind 六、 文本文件和二进制文件01 文本文件02 二进制文件03 数据在文件中的存储方式 七、 文本结束的判定01 被错误使用的feof02 正确使用方式 八、文件缓冲区 一、为什么使用文件 在我们的一般程序中我们所输入的数据都是存储在内存中的当程序退出的时候我们存储的数据也就相应消失了那么我们怎么才能做到完成相应数据的长时间存储呢  这就涉及到了数据持久化的问题我们一般数据持久化的方法有把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上做到了数据的持久化。 二、什么是文件 简单来讲文件就是磁盘中的文件。  但是在程序设计中我们一般谈的文件有两种程序文件、数据文件从文件功能的角度来分类的。 1.程序文件 包括源程序文件后缀为.c,目标文件windows环境后缀为.obj,可执行程序windows环境后缀为.exe。 比如说下图的文件就是程序文件 2.数据文件 文件的内容不一定是程序而是程序运行时读写的数据比如程序运行需要从中读取数据的文件或者输出内容的文件。 比如下图中我们对某个文件进行读取或者输入数据那么这个文件就是数据文件 3.文件名 文件名存在的意义作为一个文件惟一的文件标识方便用户识别和引用。  文件名包含文件路径 文件名主干 文件后缀  例如C:\code\test.text 为了方便文件标识通常被称为文件名 三、文件的打开与关闭 1.文件指针 概念每个被使用的文件都会在内存在开辟一个相应的文件信息区用来存储于文件相关的信息如文件名、文件状态于文件当前位置这些信息保存在一个结构体变量中这个结构体变量由系统进行声明称为FILE 在VS2013中是这样声明对的 struct _iobuf {char *_ptr;int _cnt;char *_base;int _flag;int _file;int _charbuf;int _bufsiz;char *_tmpfname;}; typedef struct _iobuf FILE;注意 1、不同的C编译器的FILE类型包含的内容不完全相同但是大同小异 2、每当打开一个文件的时候系统会根据文件的情况自动创建一个FILE结构的变量并填充其中的信息使用者不必关心细节 3、我们一般会通过一个 FILE 的指针来维护这个 FILE 结构的变量。并不会直接使用而是拿一个结构体指针指向这个结构通过这个指针来访问和维护相关的数据这样使用起来会更加方便  下面让我们来创建一个指针变量 FILE* pf;//文件指针变量定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区是一个结构体变量。通过该文件信息区中的信息就能够访问该文件。也就是说通过文件指针变量能够找到与它关联的文件。 2.文件的打开和关闭 文件的使用一般是打开文件——使用文件——关闭文件 而我们打开与关闭文件需要用到两个函数fopen和fclose 这两个函数的头文件都是stlib.h fopen 与 fclose 示例 int main() {//打开文件FILE* p fopen(test1.txt,r);if (p NULL) {perror(fopen);return 1;}else {printf(yes\n);}//关闭文件fclose(p);p NULL;return 0; }结果 注意不关闭文件的后果一个程序能够打开的文件是有限的文件属于一种资源。如果只打开不释放文件就会被占用。可能会导致一些操作被缓冲在内存中如果不能正常关闭缓冲在内存中的数据就不能正常写入到文件中从而导致数据的丢失。 四、文件的顺序读写 顺序读写顾名思义就是按照顺序在文件中读和写。  函数一览 01 字符输出函数fputs //字符输出 int fputc(int character,FILE* stream);将参数 character 指定的字符写入到指定的流 stream 中并把位置标识符向前移动 字符必须为一个无符号字符。适用于所有输出流。 示例 int main() {FILE* p fopen(test1.txt, w);if (p NULL) {perror(fopen);return 1;}fputc(k,p);char ch 0;for (ch a; ch z; ch) {if (ch % 5 0) {fputc(\n, p);}fputc(ch, p);}fclose(p);p NULL;return 0; }结果 此外我们在使用W 打开的时候还会有覆盖效果让我们来尝试一下 我们把刚刚那段代码中关于字符输出的部分进行注释 int main() {FILE* p fopen(test1.txt, w);if (p NULL) {perror(fopen);return 1;}/*fputc(k,p);char ch 0;for (ch a; ch z; ch) {if (ch % 5 0) {fputc(\n, p);}fputc(ch, p);}*/fclose(p);p NULL;return 0; }结果 结果我们发现文件中的内容被覆盖了这就是 W 的覆盖效果 02 字符输入函数fgetc //字符输入 int fgetc(FILE* stream);从指定的流 stream 获取下一个字符并把位置标识符后移字符必须为一个无符号字符。如果读取成功会返回相应的ASCII码值如果读取失败会返回一个EOF。适用于所有输入流。 示例 //使用fgetc读取文件 int main(void) {FILE* pf fopen(test1.txt, r);if (pf NULL) {perror(fopen);return 1;}//读文件int ret fgetc(pf);printf(%c\n, ret);ret fgetc(pf);printf(%c\n, ret);ret fgetc(pf);printf(%c\n, ret);fclose(pf);pf NULL;return 0; }结果 注意在读取时要把文件打开方式变为“r” 03 文本行输出函数fputs //文本行输出 int fputs(const char* str, FILE* stream);将字符串写入到指定的流 stream 中不包括空字符。适用于所有输出流。 示例 int main() {FILE* pf fopen(text2.txt,w);if (pf NULL) {perror(fopen);return 1;}fputs(abcd,pf);char arr[] abcdefgh;fputs(arr,pf);fclose(pf);pf NULL;return 0; }结果 04 文本行输入函数fgets //文本输入函数 int fgets(char* str, int num, FILE* stream);从指定的流 stream 读取一行并把它存储在 str 所指向的字符串中当读取n-1个字符时或者读取到换行符、到达文件末尾时它会停止具体视情况而定。适用于所有输入流。 示例 int main() {FILE* pf fopen(text2.txt,r);if (pf NULL) {perror(fopen);return 1;}char arr[10];fgets(arr,4,pf);printf(%s\n,arr);fgets(arr, 4, pf);printf(%s\n, arr);fclose(pf);pf NULL;return 0; }结果 **注意**假如 n 是100读取到的就是99个字符n-1因为要留一个字符给斜杠0。 05 格式化输出函数fprintf 用于对格式化的数据进行写文件发送格式化输出到流 stream 中。适用于所有输出流。 示例 struct test {char name[10];int age;char sex[4]; }; int main() {FILE* pf fopen(text3.txt, w);if (pf NULL) {perror(fopen);return 1;}struct test ts { 张三,18,男};fprintf(pf, %s %d %s, ts.name, ts.age, ts.sex);fclose(pf);pf NULL;return 0; }结果 06 格式化输入函数fscanf //格式化输入函数 int fscanf(FILE* stream, const char* format, ...);用于对格式化的数据进行读取从流 stream 读取格式化输入。适用于所有输入流 示例 struct test {char name[10];int age;char sex[4]; }; int main() {FILE* pf fopen(text3.txt, r);if (pf NULL) {perror(fopen);return 1;}struct test ts { 0 };fscanf(pf,%s %d %s,ts.name,(ts.age),ts.sex);printf(%s %d %s, ts.name, ts.age, ts.sex);fclose(pf);pf NULL;return 0; }结果 07 二进制输出函数fwrite //二进制输出函数 size_t fwrite(const void* ptr,size_t size,size_t count,FILE* stream);将ptr指向的数据写入流stream中 示例 struct test {char name[10];int age;char sex[4]; }; int main() {FILE* pf fopen(text4.txt, w);if (pf NULL) {perror(fopen);return 1;}struct test ts { abcdef,22,cdd};fwrite(ts,sizeof(struct test),1,pf);fclose(pf);pf NULL;return 0; }结果 结果显示我们输入的文字数据相显示的是乱码让我们用二进制形式打开文件来检查一下 打开后结果 原因 我们刚才用的都是文本编译器文本编译器打开二进制形式的文件完全是两种状态对于字符串以文本形式写进去和以二进制形式写进去是一样的但是对于整数、浮点数等来说就不一样了文本形式写入和二进制形式写入完全是两个概念。 08 二进制输入函数fread //二进制输入函数 size_t fread(void* ptr, size_t size, size_t count, FILE* stream);将二进制数据从stream指向的文件流中读取到ptr指向的对象中 示例 struct test {char name[10];int age;char sex[4]; }; int main() {FILE* pf fopen(text4.txt, r);if (pf NULL) {perror(fopen);return 1;}struct test ts { 0 };fread(ts, sizeof(struct test), 1, pf);printf(%s %d %s\n,ts.name,ts.age,ts.sex);fclose(pf);pf NULL;return 0; }结果 五、 文件的随机读写 01 文件指针定位函数fseek //文件指针定位函数 int fseek(FILE* stream,long int offset,int origin);根据文件指针的位置和偏移量来定位文件指针 a.参数offset是偏移量 b.origin是其实位置一共有三个  SEEK_CUR :当前文件指针位置  SEEK_END :文件末尾位置  SEEK_SET:文件起始位置 示例 int main() {FILE* pf fopen(text3.txt,r);if (pf NULL) {perror(fopen); return 1;}int ch fgetc(pf);printf(%c\n,ch);ch fgetc(pf);printf(%c\n, ch);//从当前文件指针位置向前移动两个单位fseek(pf,-2,SEEK_CUR);ch fgetc(pf);printf(%c\n, ch);fclose(pf);pf NULL;return 0; }结果 02 返回偏移量函数ftell //返回偏移量函数 long int ftell(FILE* stream);返回当前文件指针相对于起始位置的偏移量 示例 //返回文件指针相对于起始位置的偏移量 int main() {FILE* pf fopen(text4.txt, r);if (pf NULL) {perror(fopen);return 1;}//调整文件指针位置fseek(pf,5,SEEK_SET);//使文件指针从起始位置右移5个单位int ch fgetc(pf);printf(%c\n,ch);//返回文件指针所处位置的偏移量int ret ftell(pf);printf(%d\n,ret);fclose(pf);pf NULL;return 0; }结果 03 文件指针回到起始位置函数rewind //使文件指针回到起始位置 void rewind(FILE* stream);示例 //返回文件指针相对于起始位置的偏移量 int main() {FILE* pf fopen(text4.txt, r);if (pf NULL) {perror(fopen);return 1;}//调整文件指针位置fseek(pf,5,SEEK_SET);//使文件指针从起始位置右移5个单位int ch fgetc(pf);printf(%c\n,ch);//返回文件指针所处位置的偏移量int ret ftell(pf);printf(%d\n,ret);int arr[10];rewind(pf);fgets(arr,7,pf);printf(%s\n,arr);fclose(pf);pf NULL;return 0; }结果 六、 文本文件和二进制文件 根据数据的组织形式数据文件被称为文本文件或者二进制文件。 01 文本文件 如果要求在外存上以ASCII码的形式存储则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。 02 二进制文件 数据在内存中以二进制的形式存储如果不加转换的输出到外存就是二进制文件。 03 数据在文件中的存储方式 存储方式字符一律以ASCII形式存储数值型数据既可以用ASCII形式存储也可以使用二进制形式存储。 具体使用 举个简单的例子比如整数10000如果以 ASCII 码的形式形式输出到磁盘则磁盘中占用5个字节每个字符占1个字节。而如果以二进制的形式输出则在磁盘上只占4个字节。 int main() {FILE* pf fopen(text5.txt, wb);if (pf NULL) {perror(fopen);return 1;}int a 10000;fwrite(a,sizeof(int),1,pf);fclose(pf);pf NULL;return 0; }以二进制形式打开文件 我们检验一下这个数字是否是10000 七、 文本结束的判定 01 被错误使用的feof feof 函数介绍在文件结束时判断文件因为何种原因导致文件结束的函数判断是因为读取失败而结束还是因为遇到文件尾而结束。如果文件结束则返回非0值否则返回0。 错误用途feof 函数是个经常被错误使用的一个函数。在文件读取过程中不能用 feof 函数的返回值直接判断文件是否结束feof 函数绝对不是用来判断文件是否结束的函数feof 不是用来判定文件是否结束了的还是在文件已经结束时判断是什么原因导致文件结束的。 正确用途当文件读取结束时判断是因为读取失败而结束还是因为遇到文件尾而结束。 int main() {FILE* pf fopen(text4.txt, r);if (pf NULL) {perror(fopen);return 1;}int ch 0;while ((ch fgetc(pf)) ! EOF) {putchar(ch);}printf(\n);if (ferror(pf)) {puts(文件读取失败);}else if (feof(pf)) {puts(遇到文件末尾停止);}fclose(pf);pf NULL;return 0; }02 正确使用方式 文本文件读取是否结束判断返回值是否为 EOF fgetc 或者 NULL fgets 例如 fgetc 判断是否为 EOF . fgets 判断返回值是否为 NULL . 2. 二进制文件的读取结束判断判断返回值是否小于实际要读的个数。 例如 fread判断返回值是否小于实际要读的个数。 八、文件缓冲区 ANSIC 标准采用“缓冲文件系统”处理的数据文件的所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区装满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据则从磁盘文件中读取数据输入到内存缓冲区充满缓冲区然后再从缓冲区逐个地将数据送到程序数据区程序变量等。缓冲区的大小根据C编译系统决定的。 示例 #include stdio.h #include windows.hint main() {FILE* pf fopen(test6.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; }这里可以得出一个结论 因为有缓冲区的存在C语言在操作文件的时候需要做刷新缓冲区或者在文件操作结束的时候关闭文件。 如果不做可能导致读写文件的问题。
http://www.w-s-a.com/news/994795/

相关文章:

  • 系统网站开发知名的摄影网站有哪些
  • 网站拍照的幕布扬中网站建设价位
  • 网站ie兼容性差西安小程序开发的公司
  • 上海网站建设培训app网站开发成本
  • 个人网站icp外贸网站开发 河南
  • 遵义建设网站无锡市规划建设局网站
  • 海外留学网站建设方案门户网站的发布特点
  • 网站建设不赚钱net112企业建站系统
  • 网站建设团队管理模板贵州省住房和城乡建设部网站
  • 曲沃网站建设网上学编程的有哪些比较好的网站
  • 厦门网站建设慕枫学做网站需要多久
  • 爱奇艺做任务领vip网站设计广告图片
  • 中科汇联网站建设手册上海公司名称注册查询网
  • 网站建设电子商务课总结和体会关于做网站书籍
  • 仪征网站建设公司哪家好简单网页制作素材图片
  • 甘肃第九建设集团公司网站潍坊个人做网站
  • 如何做后台网站的教程网站建设 关于我们
  • 极速网站建设哪家好连云港百度推广网站建设
  • 医院网站建设的目标wordpress中英文网站模板
  • 门户型网站开发难度网站导航栏有哪些
  • 推荐做任务网站软件定制开发哪家好
  • 邯郸兄弟建站第三方仓储配送公司
  • 商丘家具网站建设wordpress 添加代码
  • 基础建设的网站有哪些内容成都科技网站建设咨询电话
  • 券多多是谁做的网站招聘网站开发模板
  • 网站主机一般选哪种的企业数字展厅
  • 网站建设该如何学衡水建设局网站首页
  • 高校网站建设工作总结番禺网站开发哪家好
  • 苏州 网站的公司wordpress主页代码
  • 怎么用html做图片展示网站外贸网站建设推广费用