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

南京金九建设集团网站宣传册制作网站

南京金九建设集团网站,宣传册制作网站,招聘网站代做,单页网站怎么卖文件指针 每个被使用的文件都在内存中开辟了一个相应的文件信息区#xff0c;用来存放文件的相关信息#xff08;如文件的名 字#xff0c;文件状态及文件当前的位置等#xff09;。这些信息是保存在一个结构体变量中的。该结构体类型是有系统 声明的#xff0c;取名FILE…文件指针 每个被使用的文件都在内存中开辟了一个相应的文件信息区用来存放文件的相关信息如文件的名 字文件状态及文件当前的位置等。这些信息是保存在一个结构体变量中的。该结构体类型是有系统 声明的取名FILE. 例如VS2013编译环境提供的 stdio.h 头文件中有以下的文件类型申明 struct _iobuf {char *_ptr;int _cnt;char *_base;int _flag;int _file;int _charbuf;int _bufsiz;char *_tmpfname; }; typedef struct _iobuf FILE;不同的C编译器的FILE类型包含的内容不完全相同但是大同小异。 每当打开一个文件的时候系统会根据文件的情况自动创建一个FILE结构的变量并填充其中的信息 使用者不必关心细节。 一般都是通过一个FILE的指针来维护这个FILE结构的变量这样使用起来更加方便。 下面我们可以创建一个FILE*的指针变量 FILE* pf;//文件指针变量定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区是一个结构体变 量。通过该文件信息区中的信息就能够访问该文件。也就是说通过文件指针变量能够找到与它关联 的文件。 输入输出函数表 文件打开方式 fread/fwrite #includestdio.h #includestring.h #includestdlib.h #includeassert.h using namespace std; // 文件操作函数 打开文件写关闭文件 再打开文件读关闭文件 这样每次文件指针就在文件开头 int main() {FILE* fp1 fopen(bite.txt, w);// 往文件里写const char* s1 linux so easy!;ssize_t ret1 fwrite(s1, sizeof(char), strlen(s1), fp1);assert(ret1 ! 0);fclose(fp1);// 往文件里读FILE* fp2 fopen(bite.txt, r);char s2[1024*4];memset(s2, 0, sizeof(s2));ssize_t ret2 fread(s2, sizeof(char), sizeof(s2)-1, fp2);assert(ret2 ! 0);printf(fread: %s\n, s2);fclose(fp2);return 0; }// 文件操作函数 bite.txt不存在先写再读 int main() {// 往文件里读写FILE* fp fopen(bite.txt, w); // 注意这里是wconst char* s1 linux so easy!;ssize_t ret1 fwrite(s1, sizeof(char), strlen(s1), fp);assert(ret1 ! 0);rewind(fp);//返回文件首位 (注意 注意 一定要将文件指针回位)char s2[1024*4];memset(s2, 0, sizeof(s2));ssize_t ret2 fread(s2, sizeof(char), sizeof(s2)-1, fp);assert(ret2 ! 0);printf(fread: %s\n, s2);fclose(fp);return 0; }// 文件操作函数() bite.txt已经存在先读再写 int main() {// 往文件里读写FILE* fp fopen(bite.txt, r); // 注意这里是rchar s2[1024*4];memset(s2, 0, sizeof(s2));ssize_t ret2 fread(s2, sizeof(char), sizeof(s2)-1, fp);assert(ret2 ! 0);printf(fread: %s\n, s2);const char* s1 linux so easy!\n;ssize_t ret1 fwrite(s1, sizeof(char), strlen(s1), fp);assert(ret1 ! 0);fclose(fp);return 0; }系统接口文件读写IO博客 文件读写相关函数 正常情况下我们对文件的读写都是按照顺序依次进行读写当然也可以根据读写的需要, 人为地移动文件位置标记的位置。文件位置标记可以向前移、向后移, 移到文件头或文件尾, 然后对该位置进行读写,显然这就不是顺序读写了, 而是随机读写。 fseek 根据文件指针的位置和偏移量来定位文件指针 int fseek ( FILE * stream, long int offset, int origin ); stream文件流操作的那个文件 offset,偏移量单位字节 origin 起始点#include stdio.h int main() {FILE *pFile;pFile fopen(example.txt, wb);fputs(This is an apple., pFile);fseek(pFile, 9, SEEK_SET);fputs( sam, pFile);fclose(pFile);return 0; }ftell 返回文件指针相对于起始位置的偏移量 long int ftell ( FILE * stream );/* ftell example : getting size of a file */ #include stdio.h int main() {FILE *pFile;long size;pFile fopen(myfile.txt, rb);if (pFile NULL)perror(Error opening file);else{fseek(pFile, 0, SEEK_END); // non-portablesize ftell(pFile);fclose(pFile);printf(Size of myfile.txt: %ld bytes.\n, size);}return 0; }rewind 让文件指针的位置回到文件的起始位置 void rewind ( FILE * stream );#include stdio.h int main() {int n;FILE *pFile;char buffer[27];pFile fopen(myfile.txt, w);for (n A; n Z; n)fputc(n, pFile);rewind(pFile);fread(buffer, 1, 26, pFile);fclose(pFile);buffer[26] \0;puts(buffer);return 0; }文件读取输入结束的判定 牢记在文件读取过程中不能用feof函数的返回值直接用来判断文件的是否结束。 而是应用于当文件读取结束的时候判断是读取失败结束还是遇到文件尾结束。 文本文件读取是否结束判断返回值是否为 EOF fgetc 或者 NULL fgets 例如 fgetc 判断是否为 EOF . fgets 判断返回值是否为 NULL .二进制文件的读取结束判断判断返回值是否小于实际要读的个数。 例如 fread判断返回值是否小于实际要读的个数。 feof() 函数 功能检查文件流是否读到了文件尾。 函数定义int feof(FILE *pf); 函数说明feof()用来侦测是否读取到了文件尾参数印为fopen0所返回的文件指针。 如果已到文件尾则返回非0 值其他情况返回0。返回为非0值时则表示己到达文件尾。清除文件错误标志 void clearerr( FILE *stream );重命名文件 int rename ( const char * oldname, const char * newname );删除文件 int remove ( const char * filename );#include stdio.h #include stdlib.h int main(void) {int c; // 注意int非char要求处理EOFFILE *fp fopen(test.txt, r);if (!fp){perror(File opening failed);return EXIT_FAILURE;}// fgetc 当读取失败的时候或者遇到文件结束的时候都会返回EOFwhile ((c fgetc(fp)) ! EOF) // 标准C I/O读取文件循环{putchar(c);}// 判断是什么原因结束的if (ferror(fp))puts(I/O error when reading);else if (feof(fp))puts(End of file reached successfully);fclose(fp); }文件缓冲区 ANSIC 标准采用“缓冲文件系统”处理的数据文件的所谓缓冲文件系统是指系统自动地在内存中为程序 中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区装 满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据则从磁盘文件中读取数据输入到内存缓 冲区充满缓冲区然后再从缓冲区逐个地将数据送到程序数据区程序变量等。缓冲区的大小根 据C编译系统决定的。 #include stdio.h #include windows.h // 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; }这里可以得出一个结论 因为有缓冲区的存在C语言在操作文件的时候需要做刷新缓冲区或者在文件操作结束的时候关闭文 件。 如果不做可能导致读写文件的问题。
http://www.hkea.cn/news/14491640/

相关文章:

  • 东坑东莞网站建设个人网站用什么程序
  • 南京做网站南京乐识专注婚庆策划公司名称
  • 公司备案证查询网站查询系统能够做二维码网站
  • 主做熟人推荐的招聘网站18款免费软件app下载
  • 设计公司logo网站免费dns解析服务器
  • 天津网站页面设计二级域名怎么注册
  • 杭州 网站建设网站网站建设公司工资标准
  • seo网站优化及网站推广公司的网站建设
  • 服装企业的网站建设做网站汉狮网络
  • 苏州专业网站设计百度域名验证网站
  • jsp网站开发心得做网站还是微信小程序
  • 可以用wpf做网站吗佛山网站建设科技公司
  • 乔拓云智能建站系统360全景网站怎么做
  • 网站开发的公司推荐中山移动网站建设公司
  • 利用社交网站做淘宝客计算机信息网络系统
  • 建设小学瓯江小区网站徐州网站建设哪家好
  • 网站备案流程阿里云seo薪资seo
  • 免费wordpress响应式企业主题哈尔滨网站基础优化
  • 算命网站建设开发怎么做一个网站出来
  • 网站怎么建设商城中国建设银行人才招聘官方网站
  • 浏览器收录网站天津网站优化方案
  • 分析网站设计外贸公司一年能赚多少
  • 网络公司网站建设首页短期网站建设培训班
  • 遵义公司做网站无锡网站优化公司
  • 网站建设全过程及如何赚钱郑州企业网站优化排名
  • 2015年做那个网站致富钢结构工程外包项目网
  • 企业网站建设长沙树莓派wordpress
  • 设计网站建设图片wordpress留言表单
  • 哈尔滨个人建站模板合肥房产网二手房出售
  • 网站规划建设书软件开发管理软件