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

I/O进程1

  • day1
    • 一、标准IO
      • 1.概念
        • 在C库中定义的一组用于输入输出的函数
      • 2.特点
        • (1).通过缓冲机制减少系统调用,提高效率
        • (2.)围绕流进行操作,流用FILE *来描述
        • (3).标准IO默认打开了三个流,stdin(标准输入)、stdout(标准输出)、stderr(标准错误)
        • (4).一般操作普通文件
      • 3.缓冲区
        • (1).全缓冲:与文件相关
        • 缓冲区刷新条件:
        • 程序正常退出:return(main) exit
        •  缓冲区溢出
        • 强制刷新fflush
        • fclose关闭对应的流
        • (2).行缓冲:与终端相关
        • 缓冲区刷新条件:
        • \n
        • 程序正常退出:return(main) exit
        • 缓冲区溢出
        • 强制刷新fflush
        • fclose关闭对应的流
        • (3).不缓冲:没有缓冲区,标准错误
        • 计算缓冲区大小(1kb)
      • 4.函数接口
        • 4.1打开文件fopen
          • FILE *fopen(const char *path, const char *mode)
          • 功能:打开文件
          • 参数:path:打开的文件     mode:打开的方式         r:只读,当文件不存在时报错,文件流定位到文件开头         r+:可读可写,当文件不存在时报错,文件流定位到文件开头         w:只写,文件不存在创建,存在清空         w+:可读可写,文件不存在创建,存在清空        a:追加(在末尾写),文件不存在创建,存在追加,文件流定位到文件末尾       a+:读和追加,文件不存在创建,存在追加,读文件流定位到文件开头,写文件流定位到文件末尾         
          • 注:当a的方式打开文件时,写只能在末尾进行追加,定位操作是无法改变写的位置,但是可以改变读的位置
          • 返回值:成功:文件流;失败:NULL,并且会设置错误码。
        • 4.2关闭文件 fclose
          • int fclose(FILE* stream);
          • 功能:关闭文件
          • 参数:stream:文件流
        • 4.3读写操作fread fwrite fgets fputs
          • (1).按照字符串读写
            • char * fgets(char *s, int size, FILE * stream);
            • 功能:从文件中每次读取一行字符串
            • 参数:s:存放字符串的地址          size:一次读取的字符个数          stream:文件流
            • 返回值:成功:s的地址;失败或读到文件末尾:NULL
            • 特性:每次实际读取的字符个数为size-1个,会在末尾自动添加\0           每次读一行,遇到\n后不再继续,读下一行。
            • int fputs(const char *s, FILE * stream);
            • 功能:向文件中写字符串
            • 参数:s:要写的内容         stream:文件流
            • 返回值:成功:非负整数;失败:EOF
            • 练习:通过fgets实现"wc -l 文件名"命令功能(计算文件行数)
          • (2).按照二进制的方式进行读写:一般操作二进制文件
            • size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
            • 功能:从文件流读取多个元素
            • 参数:ptr :用来存放读取元素           size :元素大小 sizeof(数据类型)           nmemb :读取元素的个数           stream :要读取的文件
            • 返回值:成功:读取的元素的个数; 读到文件尾: 0        失败: -1
            • size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); 功能:按对象写
            • 参数:同上
            • 返回值:成功:写的元素个数;失败 :-1
        • 4.4文件定位操作
          • void rewind(FILE *stream);
          • 功能:将文件位置指针定位到起始位置 int fseek(FILE *stream, long offset, int whence);
          • 功能:文件的定位操作
          • 参数:stream:文件流           offset:偏移量:正数表示向后文件尾部偏移,负数表示向文件开头偏移           whence:相对位置:            SEEK_SET:相对于文件开头            SEEK_CUR:相对于文件当前位置            SEEK_END:相对于文件末尾
          • 返回值:成功:0;失败:-1
          • 注:当打开文件的方式为a或a+时,fseek不起作用                                         
          •  long ftell(FILE *stream);
          • 功能:获取当前的文件位置
          • 参数:要检测的文件流
          • 返回值:成功:当前的文件位置,出错:-1

相关文章:

  • pydantic.error_wrappers.ValidationError: 1 validation error for Lockfile
  • 算法题(119):高精度减法
  • Linux基础IO(一)之回顾C语言文件接口
  • Base64是密码吗?编码与加密的本质区别
  • 2018年真题
  • Java 三大特性—多态
  • 海外直播平台交互设计师简历模板
  • 【PVR Review】《Review of Deep Learning Methods for Palm Vein Recognition》
  • 新HTML5
  • 4.3-1 jenkins安装
  • 全国大学生数学建模竞赛赛题深度分析报告(2010-2024)
  • MySQL学习笔记(四)——DML和DQL
  • 智能手表该存什么音频和文本?场景化存储指南
  • 《算法笔记》10.3小节——图算法专题->图的遍历 问题 B: 连通图
  • 测开八股收集
  • 【C++编程基础-关键字】:define和inline的区别
  • 在 Ubuntu 下通过 Docker 部署 PSQL 服务器的详细技术博客
  • codeforces B. Large Array and Segments
  • 【漫话机器学习系列】184.正态分布(Normal Distribution)
  • 青少年编程与数学 02-015 大学数学知识点 05课题、优化理论
  • 华生是养了狗,还是藏了枪——《福尔摩斯探案全集》翻译一例
  • 前列腺癌真的难以早发现吗?如何治疗?专家回应
  • 习近平向2025年上海合作组织减贫和可持续发展论坛致贺信
  • 日月谭天 | 赖清德倒行逆施“三宗罪”,让岛内民众怒不可遏
  • 广东信宜一座在建桥梁暴雨中垮塌,镇政府:未造成人员伤亡
  • 上海青少年书法学习园开园:少年以巨笔书写《祖国万岁》