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

深圳做网站平台维护的公司seo网站关键词排名软件

深圳做网站平台维护的公司,seo网站关键词排名软件,电商平台定制开发公司,商务酒店设计网站建设前言 今天我们开始I/O的学习。 I/O的学习主要以函数为主,即主要靠记忆,当然实际的工程应用过程中完全可以开卷,但出于对生产力的考量,依旧需要主动记忆大量内容。 概述 1.I/O基本概念(含笔记与导图) 2.cat的…

前言

        今天我们开始I/O的学习。

        I/O的学习主要以函数为主,即主要靠记忆,当然实际的工程应用过程中完全可以开卷,但出于对生产力的考量,依旧需要主动记忆大量内容。

概述

        1.I/O基本概念(含笔记与导图)

        2.cat的实现

        3.文件cp的实现

        4.计算文件行数的实现

1.I/O基本概念(含笔记与导图)

一、I/O 基本概念
  1. 文件输入(读取)

    • 数据从 硬盘(存储设备) 读取到 内存 中。

    • 示例程序:/a.out

  2. 文件输出(写入)

    • 数据从 内存 写入到 硬盘(存储设备) 中。


二、存储设备对比(硬盘 vs 内存)
特性硬盘(SID)内存(ARM)
容量空间大空间小
速度较慢速度快
持久性数据持久存储(非易失性)断电后数据丢失(易失性)
访问方式按键不直接接触按键直接接触

三、标准 I/O 与文件 I/O 的区别
类型交互对象特点
标准 I/O程序 ↔ 用户缓冲机制、高可移植性
文件 I/O程序 ↔ 操作系统依赖系统、低可移植性

四、标准 I/O 关键特性
特性描述
缓冲区减少直接系统调用,提高效率
速度较快(缓冲优化)
调用方式库函数(如 fprintffscanf
可移植性高(跨平台兼容)
操作对象流指针(FILE*
支持资源文件、标准输入/输出(stdin/stdout)

五、常用标准 I/O 函数列表
  1. 文件操作

    • FILE* fopen(const char* filename, const char* mode);

    • int fclose(FILE* stream);

  2. 错误处理

    • void perror(const char* s);

    • char* strerror(int errno);

  3. 字符 I/O

    • int fputc(int c, FILE* stream);

    • int fgetc(FILE* stream);

  4. 文件定位

    • int fseek(FILE* stream, long offset, int origin);

    • void rewind(FILE* stream);

    • long ftell(FILE* stream);

  5. 字符串 I/O

    • int fputs(const char* str, FILE* stream);

    • char* fgets(char* str, int size, FILE* stream);

  6. 格式化 I/O

    • int fprintf(FILE* stream, const char* format, ...);

    • int fscanf(FILE* stream, const char* format, ...);


六、注意事项
  1. 资源释放:使用 fclose 及时关闭文件,避免资源泄漏。

  2. 错误检查:调用 perror 或 strerror 诊断 I/O 错误。

  3. 缓冲机制:标准 I/O 默认启用缓冲,可通过 setbuf 调整。

思维导图与手写笔记如下:

附:I/O的基本操作

#include <IO_head.h>
int main(int argc, const char *argv[])
{//打开文件FILE* file_p = fopen("./my.txt","w+");if(file_p==NULL){ERROR("fopen failed");}//if(file_p==NULL){perror("fopen failed");return -1;}//printf("%s\n",strerror(errno));//printf("fopen failed\n")else{printf("fopen succeeded\n");}//写文件if(fputc('a',file_p)==-1){printf("fputc failed\n");return -1;}else{printf("fputc succeeded\n");}//计算文件大小long len = ftell(file_p);printf("length of file: %ld\n",len);//光标的偏移rewind(file_p);/*if(fseek(file_p,0,SEEK_SET)==-1){ERROR("fseek failed\n");}else{printf("fseek succeeded\n");}*///读文件char buf = (char)fgetc(file_p);if(buf==EOF){printf("fgets failed\n");}else{printf("fgets succeeded:buf=%c\n",buf);}//关闭文件:     //fclose(FILE* file_p){return 0;/return EOF;#define EOF (-1))}if(fclose(file_p)==EOF){ERROR("fclose failed");}else{printf("fclose succeeded\n");}return 0;
}
ubuntu@ubuntu:~/IO/class1$ ./04_fseek 
fopen succeeded
fputc succeeded
length of file: 1
fgets succeeded:buf=a
fclose succeeded
ubuntu@ubuntu:~/IO/class1$ 

2.cat的实现

2.1.codes

#include <IO_head.h>
int main(int argc, const char *argv[])
{//读取外部传参if(argc<2){printf("erroe");}FILE* file_p = fopen(*(argv+1),"r");if(file_p==NULL){ERROR("fopen failed");}else{printf("fopen succeeded\n");}//实现cat的功能char buf[128] = {0};rewind(file_p);while(1){memset(buf, 0, sizeof buf);//读取//char* fgets(char* s, int len, FILE* stream){...return s;}if(fgets(buf, sizeof buf, file_p)==NULL){printf("fgets failed\n");break;}buf[strcspn(buf, "\n")] = '\0';//buf[strlen(buf)-1]='\0';//printf("fgets succeeded\n");printf("buf = [%s]\n",buf);}return 0;
}

2.2.run

ubuntu@ubuntu:~/IO/class1$ ./h1 my.txt
fopen succeeded
buf = [abcd]
buf = [efg]
buf = [hi]
buf = [j]
fgets failed
ubuntu@ubuntu:~/IO/class1$ 

此处./h1相当于cat

注意:没有写fclose,因为累了......

3.文件cp的实现

3.1.codes

#include <IO_head.h>
int main(int argc, const char* argv[]){//欲将键入的文件进行拷贝,至少需要一个原文件,一个目标文件if(argc<3)printf("error");//获取外部传参FILE* file_2_p = fopen(*(argv+2),"r");FILE* file_1_p = fopen(*(argv+1),"w");char  buf[128]={0};while(1){memset(buf,0,sizeof buf);if(fgets(buf,sizeof buf,file_2_p)!=NULL){printf("fgets succeeded\n");}else{printf("fgets failed\n");break;}if(fputs(buf,file_1_p)!=EOF){printf("fputs succeeded\n");}else{printf("fgets failed\n");break;}}return 0;
}

3.2.run

ubuntu@ubuntu:~/IO/class1$ ./h2 new.text my.txt
fgets succeeded
fputs succeeded
fgets succeeded
fputs succeeded
fgets succeeded
fputs succeeded
fgets succeeded
fputs succeeded
fgets failed
ubuntu@ubuntu:~/IO/class1$ ./h1 new.text
fopen succeeded
buf = [abcd]
buf = [efg]
buf = [hi]
buf = [j]
fgets failed
ubuntu@ubuntu:~/IO/class1$ 

此处./h2相当于cp

注意:同理,没有写fclose,因为累了......

4.计算文件行数的实现

4.1.codes

#include <IO_head.h>
int main(int argc, const char* argv[]){//获取外部传参if(argc<2)printf("error\n");FILE* file_p = fopen(*(argv+1),"r");//循环计算行数char buf[128]={0};int len = 0;while(1){memset(buf,0,sizeof buf);if(fgets(buf,sizeof buf, file_p)!=NULL){len++;}else{break;}}printf("有%d行\n",len);return 0;
}

4.2.run

ubuntu@ubuntu:~/IO/class1$ ./h3 my.txt
有4行
ubuntu@ubuntu:~/IO/class1$ 

此处./h3相当于计算行数的函数。

注意:同理,没有写fclose,因为累了......

结语

        以上。

http://www.dtcms.com/wzjs/253155.html

相关文章:

  • 网站升级维护通知网络营销常见术语
  • 想找做海报的超清图片去哪个网站找北京做网站的公司排行
  • 汽车网站建设公司哪家好站长之家查询域名
  • 中国域名网站公司网站seo外包
  • 网站备案信息变更北京seo经理
  • 友汇网 做公司网站靠谱的代运营公司
  • 怎么查网站注册信息短链接在线生成免费
  • icp备案服务码seo搜索引擎优化技术教程
  • 微信公众号上微做网站发布悬赏任务的推广平台
  • 备案的网站换空间谷歌优化师
  • 网站开发了下载文件需要百度搜索广告收费标准
  • 凡科网做网站如何推广国外搜索引擎大全百鸣
  • 制作网站服务公司百度竞价推广效果好吗
  • 文化传播做网站推广吗无锡百度公司王东
  • 北京团购网站建设竞价系统
  • 做网站的前提营销策划与运营团队
  • 做多肽的都有哪些网站企业seo优化服务
  • 做实验室信息的网站怎么自己建网站
  • 有哪些官方网站做的比较好如何在百度打广告
  • 外贸seo网站推广公司seo工作流程图
  • 重庆教育建设有限公司网站百度app安卓版下载
  • 大沥做网站前端性能优化有哪些方法
  • iframe 网站前台模板搜索引擎营销的内容
  • 深圳网站建设比较有名的企业深圳门户网站
  • 网站开发和网页设计的区别搜索引擎优化的简称是
  • 网站建设 选中企动力如何推广小程序
  • 规划设计 网站 网站结构关键词点击价格查询
  • 动态网站项目实训教程任务3怎么做网站联盟
  • 用vs做网页是怎么创建网站的网站优化公司认准乐云seo
  • b2c电子商务网站的基本部分组成.百度搜索入口官网