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

全能网站建设完全自学sem对seo的影响有哪些

全能网站建设完全自学,sem对seo的影响有哪些,品牌vi,两学一做网站专栏文件IO 系统调用&#xff08;不带缓冲的IO操作&#xff09;库函数&#xff08;默认带用户缓冲的IO操作&#xff09; 一、非缓冲IO 系统调用&#xff1a;即为不带缓冲的IO 1.打开文件open 2.读取文件read NAMEread - read from a file descriptorSYNOPSIS#include <unist…

文件IO


  • 系统调用(不带缓冲的IO操作)
  • 库函数(默认带用户缓冲的IO操作)

一、非缓冲IO

  • 系统调用:即为不带缓冲的IO

1.打开文件open

在这里插入图片描述

在这里插入图片描述

2.读取文件read

NAMEread - read from a file descriptorSYNOPSIS#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);DESCRIPTIONread() attempts to read up to count bytes from file descriptor fd into the buffer starting at buf.On  files that support seeking, the read operation commences at the file offset, and the file offset is incremented by 	        the number of bytes read.  If the file offset is at or past the end of file, no bytes are read, and read() returns zero.If count is zero, read() may detect the errors described below.  In the absence of any errors, or if read() does not            check for errors, a read() with a count of 0 returns zero and has no other effects.According to POSIX.1, if count is greater than SSIZE_MAX, the result is implementation-defined; see NOTES for the upper          limit on Linux.RETURN VALUEOn success, the number of bytes read is returned (zero indicates end of file), and the file position is advanced by this        number.  It is not an error if this number is smaller  than  the  number  of  bytes requested;  this  may  happen  for          example because fewer bytes are actually available right now (maybe because we were close to end-of-file, or because we          are reading from a pipe, or from a terminal), or because read() was interrupted by a signal.  See also NOTES.On error, -1 is returned, and errno is set appropriately.  In this case, it is left unspecified whether the file position        (if any) changes.
  • fd:文件描述符
  • buf:一块内存的首地址,用于存放读取的数据
  • count:读取的字节数
  • 返回值:读取到的字节数,0表示文件读取结束

3.写入文件write

在这里插入图片描述

4.关闭文件close

在这里插入图片描述

5.创建文件create

在这里插入图片描述

二、案例使用

1.文件读操作

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<errno.h>
#include<unistd.h>int main(int argc, char *argv[]) {int fd;if (argc < 2) {fprintf(stderr, "Usage : %s file\n", argv[0]);exit(1);}if ((fd = open(argv[1], O_RDONLY)) == -1) {perror("open");fprintf(stderr, "%d\n", errno);exit(1);}while (1) {char buff[512] = {0};//buff用于存放读出内容ssize_t num;if ((num = read(fd, buff, sizeof(buff))) > 0) {//0表示读到文件末尾 -1表示出错printf("%s", buff);} else {break;}}close(fd);return 0;
}

在这里插入图片描述

由于文件较大char buff[512]字节无法一次性读完,两次buff读的中间出现会一些特殊的符号(数组的结束位置\0被覆盖)。

为了解决上述问题,可以通过临时将buff[]数组的最后一个元素赋值为\0将其结束,从而解决buff[]数组后一个位置被覆盖的问题(有可能越界赋值)。

在这里插入图片描述

2.文件拷贝操作

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<errno.h>
#include<unistd.h>int main(int argc, char *argv[]) {int fd1, fd2;if (argc < 3) {fprintf(stderr, "Usage : %s file1 file2\n", argv[0]);exit(1);}if ((fd1 = open(argv[1], O_RDONLY)) == -1) {perror("open1");fprintf(stderr, "%d\n", errno);exit(1);}if ((fd2 = open(argv[2], O_RDWR | O_CREAT, 0660)) == -1) {perror("open2");fprintf(stderr, "%d\n", errno);exit(1);}//文件拷贝操作while (1) {char buff[512] = {0};//buff用于存放读出内容buff[512] = '\0';ssize_t num1;ssize_t num2;if ((num1 = read(fd1, buff, sizeof(buff))) > 0) {//0表示读到文件末尾 -1表示出错//将读出的文件buff写入目标文件, 如果写入失败则直接退出循环if ((num2 = write(fd2, buff, num1)) < 0) break;} else {break;}}close(fd1);close(fd2);return 0;
}

在这里插入图片描述

文件拷贝成功。

三、缓冲IO

  • 库函数:即为默认带用户缓冲的IO操作(标准IO/用户缓冲IO)

1.打开文件fopen

在这里插入图片描述

2.读取文件fread

在这里插入图片描述

3.写入文件fwrite

在这里插入图片描述

4.关闭文件fclose

在这里插入图片描述

四、案例使用

1.文件拷贝

#include "head.h"int main(int argc, char *argv[]) {int opt;char rname[50] = {50}, wname[50] = {0};FILE *r, *w;//文件打开while ((opt = getopt(argc, argv, "r:w:")) != -1) {switch (opt) {case 'r' :strcpy(rname, optarg);break;case 'w' :strcpy(wname, optarg);break;default:fprintf(stderr, "Usage : %s -r file1 -w file2\n", argv[0]);break;}}if (!strlen(rname) || !strlen(wname)) {//判定 -r -w的参数是否为空fprintf(stderr, "Usage : %s -r file1 -w file2\n", argv[0]);exit(1);}if ((r = fopen(rname, "r")) == NULL) {//判定以r形式的文件是否打开成功perror("fopen1");exit(1);}if ((w = fopen(wname, "w")) == NULL) {//判定以w形式的文件是否打开成功perror("fopen2");exit(1);}//文件读取 写入ssize_t num;while (1) {char buff[1024] = {0};if ((num = fread(buff, 1, sizeof(buff), r)) > 0) {fwrite(buff, 1, num, w);} else {break;}}fclose(r);fclose(w);return 0;
}

在这里插入图片描述

http://www.khdw.cn/news/65327.html

相关文章:

  • web页面设计原则外贸seo软件
  • 网站建设后商品进不去详情页青岛网站seo分析
  • 镜像网站做排名seo关键词排名优化教程
  • 做律师事务所网站代写软文费用全网天下实惠
  • pc网站开发语言免费推广引流平台
  • 网页设计与网站建设作品seo工具
  • 网站优化教程网站设计制作公司
  • 河北省造价信息价查询志鸿优化网官网
  • 天津做淘宝网站178软文网
  • 织梦电影网站免费模板网站推广优化排名教程
  • 下载的网站模板如何安装如何制作网站二维码
  • 眼科医院网站开发策划新闻联播直播 今天
  • 如何给网站做排名网络商城应该如何推广
  • 上海网站se0优化公司生成关键词的软件
  • 怎么查一个网站是谁做的百度榜
  • 湘潭做网站价格找磐石网络一流网站seo顾问
  • 百度网站建设开场话术郑州seo外包服务
  • 响应式网站建设济南百度推广天津总代理
  • 在discuz做网站女排联赛最新排行榜
  • 网架公司有哪些公司泉州百度seo
  • 馆陶网站建设怎样和政府交换友链
  • 建设网站收费北京网站推广服务
  • 阿里云机器怎么做网站池州网络推广
  • 企业网站添加图片谷歌广告上海有限公司官网
  • 本地搭建wordpress出现403seo搜索排名优化
  • 做网站托管如何提高网站在百度的排名
  • 电子商务的就业方向自己怎么优化我网站关键词
  • 用dedecms 做门户网站优秀营销软文范例500字
  • 北京网站建设第一品牌优化设计答案六年级
  • 南阳做网站电话友情链接交易网