江西城乡建设网站,互联网创业项目,工信部网站备案平台,网页设计:编程学习网站素材一、read用法 例#xff1a;代码如下: 第一步在程序当前目录新建 ————————————————— #include stdio.h #include fcntl.h //open头文件 #include unistd.h //read头文件 #include sys/types.h //read头文件 #include 代码如下: 第一步在程序当前目录新建 ————————————————— #include stdio.h #include fcntl.h //open头文件 #include unistd.h //read头文件 #include sys/types.h //read头文件 #include sys/uio.h //read头文件 int main(){ int fd; char *buf; fd open(“a.txt”,’r’); if(fd 0) printf(open file error!); if((read(fd,buf,1000)) 0) { printf(read file error!); }else{ printf(read information:%s\n,buf); } close(fd); } -------------------------------------------------------- 运行效果: 二、read扩展 健壮地读无缓冲 无缓冲健壮地读的原理首先将待读入文件的长度放入一个临时变量中循环的读取文件当临时变量的值等于0时代表读完毕。 故无缓冲健壮地读是通过一个 while循环和一个临时变量来保证文件被读取完毕 例: 我们采用无缓冲健壮地读 ——————————————————— #include stdio.h #include fcntl.h #include unistd.h #include sys/types.h #include sys/uio.h ssize_t readExtend(int fd,void *usrbuf,size_t n); int main(){ int fd; char *buf; fd open(“a.txt”,’r’); if(fd 0) printf(open file error!); if((readExtend(fd,buf,1000)) 0) { printf(read file error!); }else{ printf(read information:%s\n,buf); } close(fd); } ssize_t readExtend(int fd,void *usrbuf,size_t n){ size_t tmp n; //临时变量 存储待读取长度 ssize_t nread; //返回值 char *tmpBuf usrbuf; while(tmp 0){ if((nreadread(fd,tmpBuf,tmp)) 0){ return -1; }else if(nread 0) break; tmp -nread; tmpBuf nread; } return (n-tmp); } ---------------------------------------------------------- 二、read扩展 健壮地读有缓冲 有缓冲读的原理就是将数据缓冲至usrbuf中当我们调取read时候会检测缓冲值中是否存在如果存在则不进行读取如果缓存的长度小于所需的长度则重新调取read读取。