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

专业设计网站排行榜做网站好的

专业设计网站排行榜,做网站好的,贵阳网站定制电话号码,中国建筑app目录 fseekftellrewindfflushgetline 橙色 当你在文件中写入了10个字符后#xff0c;又想把这10个字符读出来#xff0c;该怎么做呢#xff1f;因为有文件操作符指针的存在#xff0c;此时该指针已经指在了这10个字符末尾#xff0c;所以需要把该指针重定向#xff0c;这… 目录 fseekftellrewindfflushgetline 橙色 当你在文件中写入了10个字符后又想把这10个字符读出来该怎么做呢因为有文件操作符指针的存在此时该指针已经指在了这10个字符末尾所以需要把该指针重定向这就用了本文中所介绍的几个函数 fseek fseek设置流 stream 的文件位置为给定的偏移 offset参数 offset 意味着从给定的 whence 位置查找的字节数。 int fseek(FILE *stream, long int offset, int whence)stream — 这是指向 FILE 对象的指针该 FILE 对象标识了流。offset — 这是相对 whence 的偏移量以字节为单位。whence — 这是表示开始添加偏移 offset 的位置。它一般指定为下列常量之一 如果成功则该函数返回零否则返回非零值。 ftell ftell返回给定流 stream 的当前文件位置。 long int ftell(FILE *stream)stream — 这是指向 FILE 对象的指针该 FILE 对象标识了流。该函数返回位置标识符的当前值。如果发生错误则返回 -1L全局变量 errno 被设置为一个正值。 程序实例——求程序的有效字节 #include stdio.h #include stdlib.hint main(int argc, char **argv){FILE *fp;if(argc 2) {fprintf(stderr, Usage...\n);exit(1);}fp fopen(argv[1], r);if(fp NULL) {perror(fopen());exit(1);}// 将指针定位在文件末尾fseek(fp, 0, SEEK_END);printf(%d\n, ftell(fp));exit(0); }rewind rewind设置文件位置为给定流 stream 的文件的开头。 void rewind(FILE *stream)相当于(void) fseek(stream, 0, SEEK_SET); 注意 fseek和ftell中偏移offset的修饰类型是long因此只能对2G左右大小的文件进行操作否则会超出long的范围 fseeko和ftello则将偏移的修饰类型使用typedef定义为offset_t具体类型交由系统决定因此不存在文件大小的限制。但是这两个函数不是C标准库函数而是隶属于POSIX标准POSIX是标准C库的超集或者说C库是普通话而POSIX是方言。 fflush fflush刷新流 stream 的输出缓冲区。刷新指的是将缓冲区内存上的一片区域的内容写入到磁盘外存中或者输出到终端上显示。 int fflush(FILE *stream)如果参数为NULL(即没传递参数)则刷新所有的已打开的流如果成功该函数返回零值。如果发生错误则返回 EOF且设置错误标识符即 feof。 代码示例 #include stdio.hint main() {printf(Before while(1));while(1);printf(After while(1));exit(0); }打印结果 // 什么都不打印原因 对于标准输出输出缓冲区刷新的时机 输出缓冲区满或者遇到换行符\n强制刷新或者进程结束 因此可以修改为 #include stdio.h #include stdlib.h int main() {// 遇到\n刷新printf(Before while(1)\n);while(1);printf(After while(1)\n);exit(0); }或者修改为 #include stdio.h #include stdlib.hint main() {printf(Before while(1));// 强制刷新fflush(stdout);// 或者 fflush(NULL);while(1);printf(After while(1));exit(0); }缓冲区的作用大多数情况下是好事合并系统调用增加程序的吞吐量。 缓冲的分类 行缓冲line buffered针对标准输出终端设备有换行刷新缓冲满刷新强制刷新三种后两个和全缓冲一致全缓冲fully buffered默认缓冲机制除标准输出【终端设备】例如重定向到文件有缓冲满刷新强制刷新两种强制刷新例如调用fflush函数或者进程结束时也会强制刷新此时换行符仅仅只是个换行符没有刷新功能无缓冲unbuffered例如stderr需要立即输出数据会立即读入内存或者输出到外存文件和设备上 setvbuf定义流 stream 应如何缓冲。理解即可。 int setvbuf(FILE *stream, char *buffer, int mode, size_t size)stream — 这是指向 FILE 对象的指针该 FILE 对象标识了一个打开的流。buffer — 这是分配给用户的缓冲。如果设置为 NULL该函数会自动分配一个指定大小的缓冲。mode — 这指定了文件缓冲的模式 getline 之前介绍的函数都不能获得完整的一整行有缓冲区大小的限制而下面介绍的getline函数则可以动态分配内存当装不下完整一行时又会申请额外的内存来存储。 getline是C标准库函数但不是C标准库函数而是POSIX所定义的标准库函数在POSIX IEEE Std 1003.1-2008标准出来之前则只是GNU扩展库里的函数。在gcc编译器中对标准库stdio进行了扩展加入了一个getline函数。 getline会生成一个包含一串从输入流读入的字符的字符串直到以下情况发生会导致生成的此字符串结束 到文件结束遇到函数的定界符输入达到最大限度 函数原型 #include stdio.h ssize_t getline(char **lineptr, size_t *n, FILE *stream);lineptr指向存放该行字符的指针如果是NULL则有系统帮助malloc请在使用完成后free释放。该参数是一个二级指针因此传参需要一级指针的地址。即函数会把读取到的字符串的首地址存放在一级指针中。 // 传参 char *ptr; // 函数内的实际操作 // 假设读取到的字符串Hello的首地址为0x000 ptr 0x000; // 此时ptr就指向了Hellon如果是由系统malloc的指针填0 stream函数需要读取的FILE流 返回值成功返回读取的字节数失败或读完返回-1。 代码示例 int main(int argc, char **argv) {FILE *fp;// 一定要初始化否则指针会指向内存中的随机位置char *linebuf NULL;size_t linesize 0;if(argc 2) {fprintf(stderr, Usage...\n);}fp fopen(argv[1], r);if(fp NULL) {perror(fopen());exit(1);}while(1) {// 当返回-1时则读完if(getline(linebuf, linesize, fp) 0)break;printf(%d\n, strlen(linebuf));}fclose(fp);exit(0); }
http://www.dnsts.com.cn/news/150128.html

相关文章:

  • 天河网站建设公司网页模板免费下载
  • 免费网站域名空间域名注册网站 简称
  • 上海网站备案审核全屋定制软件
  • 鲜花网站建设策划方案书网站移动端是什么情况
  • php网站里放asp比利时网站的后缀
  • 饿了吗网站有问题怎么办湛江制作公司网站
  • 绍兴网站建设方案报价小型创意电子产品设计
  • 中小型网站建设策划网站建设文化价格
  • 网站免费一站二站四站怎么白嫖免费的域名
  • 锦州做网站哪家好网站宣传的方法
  • 建站哪家公司比较好而且不贵爱发电怎么做网站
  • 徐州徐州网站建设网站设计好后如何发布
  • 课程网站建设wordpress重新安装主题
  • php 怎么做视频网站太原优化网站排名
  • 网站备案好广告网站模板下载 迅雷下载不了
  • 网站后端技术语言浙江省建设工程质量协会网站
  • 建个外国网站征婚网站开发
  • 个人网站效果建筑工程网站模板
  • 网站建设与管理实训报告总结南宁模板做网站
  • 网站功能模块什么意思属于o2o的电商平台有哪些
  • 青海网站建设与管理有自己团队做网站上线多久
  • 国内做设计的网站有哪些方面网站建设和编程
  • ui培训班贵阳seo软文推广
  • 河南平台网站建设找哪家汕头网站推广优化
  • 南宁外贸网站建设企业网站的宣传功能体现在哪里
  • vps如何放置网站永久免费个人网站注册
  • 佛山的网站建设公司纪检监察门户网站建设论证报告
  • 粉丝网站制作北京住房投资建设中心网站首
  • 深圳市门户网站建设企业上海医疗旅游开发网站建设
  • 丹东制作网站公司用模板建商城购物网站