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

优秀网站的特点百度官网首页官网

优秀网站的特点,百度官网首页官网,山东省城建设计院网站,为企业做好服务保障今天在复习UNIX文件系统#xff0c;用到那个read函数#xff0c;但是无意中却掉到一个坑里了#xff0c;用了一个多小时才找到问题根源#xff0c;这里记录一下。 问题是这样的#xff1a;我需要使用read和write函数把键盘输入的信息复制到输出。所以我写了如下程序#… 今天在复习UNIX文件系统用到那个read函数但是无意中却掉到一个坑里了用了一个多小时才找到问题根源这里记录一下。 问题是这样的我需要使用read和write函数把键盘输入的信息复制到输出。所以我写了如下程序 #include #define MAXSIZE 10 int main(void) {charc;charbuf[MAXSIZE];intn;while((n read(0,buf,MAXSIZE)) 0)//海燕高尔基在苍茫的大海上狂风卷积write(1,buf,n);//从buf中输出n个字节的信息到标准输出中return 0; } 输入”HelloWorld“检测好像没问题。但是当我输入”海燕高尔基在苍茫的大海上狂风卷积“却发现不太对了这是个什么操作 HelloWorld HelloWorld 海燕高尔基在苍茫的大海上狂风卷积 海燕高尔基海上狂风卷 为什么后面那个它中间有几个字掉队了经过多次测试我发现如果输入的是英文字符就没问题而中文字符字节数只要超过了那个MAXSIZE就会出问题。我一度认为是因为读取一次read后内存中数据对齐导致的所以我换了几种组合中文加英文但是还是有问题。于是没办法只能去读函数的原型和定义的相关描述了。函数的原型是长下面这样的 ssize_t read(int fd, void *buf, size_t count); 该函数每次调用成功返回读取的字节数出错返回-1并设置errno如果在调read之前已到达文件末尾则这次read返回0。参数count是请求读取的字节数读上来的数据保存在缓冲区buf中同时文件的当前读写位置向后移。注意这个读写位置和使用C标准I/O库时的读写位置有可能不同这个读写位置是记在内核中的而使用C标准I/O库时的读写位置是用户空间I/O缓冲区中的位置。 为了检测我读取到的到底是多少个字节我把程序修改如下 #include #define MAXSIZE 10 int main(void) {charc;charbuf[MAXSIZE];intn;while((n read(0,buf,MAXSIZE)) 0)//海燕高尔基在苍茫的大海上狂风卷积 { printf(%d\n,n); write(1,buf,n);//从buf中输出n个字节的信息到标准输出中 putchar(\n); }return 0; } 我很疑惑的发现每次读到的的确是MAXSIZE个字节的数据也把这对应的数据输出了但是在一次循环后中间还是跳过了MAXSIZE个字节的数据没输出。 海燕高尔基在苍茫的大海上狂风卷积10海燕高尔基10海上狂风卷 到底是什么导致了这一现象呢我怀疑是字符与字节的问题但是说不上到底是那个函数在处理这个出问题了。所以我另外写了一个函数测试。 #include int main(void) {char buf[4];charc ;inti;for(i 0;i 3;i) { read(0,buf,2); buf[2] \0; printf(%s\n,buf); read(0,buf,2); buf[2] \0; printf(%s\n,buf); } } 我三次分别输入 ”好的\n   好的h  “好hj”其输出如下 好的 好 好的h 好 h 好hj 好 j 我发现其实在读取的时候数据是没有任何问题的一个中文占了两个字节所以第一组测试数据的两个字节读了前两个字节 好 字并输出了但是它下一个竟然不是读第三个字节和第四个字节的 的 字而是把回车读进去并输出了(每次输出都本来会输出一个空格这里共输出了四个空格) 而第二组测试数据也是首先读两个字节输出 好 而第二次读取的两个字节分别是 h 和 \n 。 第三组数据前两个字节读的是 好 而后两个字节读的分别是 j 和 \n 。 其实到这里问题已经不难看出了当我们使用read函数去读取数据时它会按照你提供的count去读取count个字节的数据同时文件指针后移但是文件指针移动并非是以字节为单位来移动的而是以字符为单位来移的。(这里说的字符并非只是char类型的还包括了宽字符。我把它们都叫字符)。所以这也就导致了我最开始的那个错误。 海燕高尔基在苍茫的大海上狂风卷积10海燕高尔基10海上狂风卷 它读取了10个字节的数据也就是读到了5个中文字然后它把文件指针往后移动10个字符所以在第一次调用read函数之后文件指针已经指向了第十一个字符也就是 海 字。所以下一次读取就是从这个位置开始了。 标签 版权申明本站文章部分自网络如有侵权请联系west999comoutlook.com 特别注意本站所有转载文章言论不代表本站观点本站所提供的摄影照片插画设计作品如需使用请与原作者联系版权归原作者所有
http://www.dnsts.com.cn/news/15231.html

相关文章:

  • 学校网站首页设计小程序如何推广引流
  • 缔客网络上海响应式网站建设网站建设属于什么资产
  • 广州建站外包公司历史长西安注册公司官网
  • 桂林北站到龙脊梯田长治做网站公司
  • 湛江企业网站建设流程wordpress批量修改文章分类
  • 网站重新备案广告设计哪个网站好
  • 网站建设工作安排方案wordpress 标签函数
  • 汕尾网站建设公司北京比较大的网站建设公司
  • 济南网站建设网站建设福建住房与城乡建设网站
  • 哪一个网站做专栏作家好点会展中心网站平台建设方案
  • 网站项目中的工作流程番禺区网站建设哪家好
  • 山东省作风建设网站图片生成网页链接在线
  • 外贸做企业什么网站建设html软件下载手机版
  • 浙江台州网站制作已有域名 搭建网站
  • 公司做网站费用和人员配备怎样做境外电商
  • 东莞网站建设优化企业南京比较大的外贸公司有哪些
  • 廊坊企业建站重庆工厂网站建设
  • 营销型网站建设的流程建设一个本地网站
  • 滕州手机网站建设案例南宁市建设工程质量监督站网站
  • 网站域名的管理密码如何索取wordpress改成英文
  • 如何建设公司的网站在阿里云域名可以做网站吗
  • 电子商务网站建设的目的意义重庆发布微博
  • 做网站图片链接到天猫阿里巴巴国际站买家版
  • 基于阿里云的网站开发自己做淘宝客网站吗
  • 网站建站公司哪家价钱合理中英文网站建设的差别
  • 毕业设计都是做网站吗二手电商怎么做
  • 二手优品哪个网站做国外网站有哪些推荐的
  • 东莞品牌营销型网站建设企业建站系统营销吧tt团队
  • 网站城市分站是怎么做的佛山外贸网站建设公司
  • 河北省建设机械会网站首页广告公司简历模板