标准IO 2月4日学习笔记

这篇具有很好参考价值的文章主要介绍了标准IO 2月4日学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

IO输入输出,操作对象是文件

Linux文件类型:
        b   block       块设备文件
                        按块扫描设备信息的文件
                        存储设备

        c   character   字符设备文件
                        按字符扫描设备信息的文件 

        d   directory   目录文件 
                        存放文件

        -               普通文件 
                        存放数据
                        图片、音视频、压缩包、文本文件

        l   link        链接文件 
                        快捷方式

        s   socket      套接字文件
                        用来套接字通信

        p   pipe        管道文件
                        用来进程间通信

 

普通文件:
        1.ASCII码文件
            文件中所有的字符均为能够在终端上显示的字符
            文本文件、程序.c 
        2.二进制文件
            文件中存放数据的二进制形式
            图片、音视频、压缩包 

        ASCII码文件是特殊的二进制文件

 

标准IO、文件IO
        标准IO是库函数
        文件IO是系统调用

        系统调用:功能强大,应对复杂场景不够灵活
        库函数:针对系统调用的封装,使用方便灵活

        标准IO可以在Windows或者Linux平台使用
        文件IO只能在Linux系统平台使用
 

 

标准IO:
        getchar putchar scanf printf gets puts  -> 标准IO

        #include <stdio.h>      

        fopen/fclose 
        fgetc/fputc 
        fgets/fputs
        fscanf/fprintf
        fread/fwrite 
        fseek/rewind/ftell 

从文件中读写数据的流程:
        打开文件 -> 读写文件 -> 关闭文件

      fopen                   fclose
                    fgetc/fputc     单个字符的读写
                    fgets/fputs     字符串的读写
                    fscanf/fprintf  格式化字符串的读写
                    fread/fwrite    二进制文件的读写

  7.函数接口:
        1.fopen
          FILE *fopen(const char *pathname, const char *mode);
          功能:
            打开pathname对应的文件并与其建立一个文件流
          参数:
            pathname:要打开文件路径的字符串
            mode:
                r       只读            文件不存在报错,文件存在只读打开
                r+      读写            文件不存在报错,文件存在读写打开
                w       只写            文件不存在创建,文件存在将文件内容清空,只写打开
                w+      写读            文件不存在创建,文件存在将文件内容清空,写读打开
                a       追加只写        文件不存在创建,文件存在追加只写打开
                a+      追加写读        文件不存在创建,文件存在追加写读打开
          返回值:
              成功返回打开的文件流指针
              失败返回NULL

#include <stdio.h>

int main(void)
{
	FILE *fp = NULL;

	fp = fopen("a.txt", "r");
	if (NULL == fp)
	{
		perror("fail fopen");
		return -1;
	}

	printf("fopen success!\n");

	fclose(fp);

	return 0;
}

        2.fclose 
          int fclose(FILE *stream);
          功能:
            关闭文件,释放文件流指针
          参数:
            stream:文件流指针
          返回值:
            成功返回0 
            失败返回EOF(-1)

 8.文件流:
        1.具有方向性(读写)
        2.具有连续性
        3.具有顺序性

        句柄:操作对象的一个抽象

9.特殊的三个文件流:
        stdin   标准输入流          从终端读取数据
        stdout  标准输出流          向终端打印数据
        stderr  标准出错流          向终端打印数据 

        getchar、scanf、gets 通过stdin来读取终端数据
        putchar、printf、puts通过stdout来向终端输出数据
        perror通过stderr来向终端输出数据

#include <stdio.h>

int main(void)
{
	fclose(stdin);
	fclose(stdout);
	fclose(stderr);
	getchar();
	
	printf("hello world!\n");
	perror("hello world!\n");

	return 0;
}

 10.标准IO缓存:
        缓存分为3类:
            1.全缓存  4k
                缓存区满刷新
                
                刷新条件:
                    1.缓存区存满刷新(全缓存大小:4096)
                    2.fflush函数强制刷新
                    3.程序结束/fclose刷新

                与文件建立的缓存

            2.行缓存  1k
                遇到\n刷新  

                刷新条件:
                    1.缓存区存满刷新(行缓存大小:1024)
                    2.遇到\n刷新 
                    3.fflush函数强制刷新
                    4.程序结束/fclose刷新

                与终端建立的缓存            stdin   stdout 

            3.不缓存
                直接刷新

                缓存区大小 0k               stderr

                人机交互、界面控制、出错处理

            4.setvbuf
              int setvbuf(FILE *stream, char *buf, int mode, size_t size);
              功能:
                改变一个流的缓存类型
              参数:
                stream:文件流指针
                buf:指定缓存空间的首地址
                mode:
                    _IONBF  不缓存
                    _IOLBF  行缓存
                    _IOFBF  全缓存
                size:
                    设定缓存区的大小
              返回值:
                成功返回0 
                失败返回非0 

#include <stdio.h>

int main(void)
{
	char tmpbuff[4096] = {0};

//	setvbuf(stdout, NULL, _IONBF, 0);		//设置成不缓存
//	setvbuf(stdout, tmpbuff, _IOFBF, 4096);	//设置成全缓存
	setvbuf(stdout, tmpbuff, _IOLBF, 1024);	//设置成行缓存

	printf("hello world\n");
	
	while (1)
	{
		
	}

	return 0;
}

 文章来源地址https://www.toymoban.com/news/detail-827169.html

到了这里,关于标准IO 2月4日学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java io流 学习笔记

    通过IO我们能对硬盘文件进行读和写。(网络数据的传输也涉及到io)。 按照 流的方向 进行分类:分为输入、输出流。 往内存中去:叫做 输入(Input) 。或者叫做 读(Read) 。 从内存中出来:叫做 输出(Output) 。或者叫做 写(Write) 。 按照 读取数据方式 不同进行分类: 按照 字节 的

    2024年02月14日
    浏览(37)
  • 文件 IO 2月18日学习笔记

    标准IO和文件IO的区别:     1.标准IO是库函数,是对系统调用的封装     2.文件IO是系统调用,是Linux内核中的函数接口     3.标准IO是有缓存的     4.文件IO是没有缓存的 文件IO:     1.操作步骤:         打开 - 读/写 - 关闭          2.打开文件:         open 接口有两种形式

    2024年02月19日
    浏览(30)
  • 目录IO 2月19日学习笔记

     1. lseek        off_t lseek(int fd, off_t offset, int whence);        功能:             重新设定文件描述符的偏移量        参数:             fd:文件描述符             offset:偏移量             whence:                 SEEK_SET    文件开头                 SEEK_CUR    文件当前

    2024年02月20日
    浏览(35)
  • C++学习笔记之四(标准库、标准模板库、vector类)

    C + + C++ C + + 标准库指的是标准程序库( S t a n d a r d Standard St an d a r d L i b a r a y Libaray L iba r a y ),它定义了十个大类,其中包括我们比较熟悉的 i o s t r e a m , s t r i n g iostream, string i os t re am , s t r in g 都是这十个大类的其中一个类中的一个小类。而 c + + c++ c + + 的标准模板库也

    2024年02月07日
    浏览(38)
  • 线性代数:约当标准型学习笔记

    线性代数是数学中重要的分支之一,在各个领域中都有广泛的应用。其中,矩阵的基本理论与方法是线性代数的重点和难点。本文主要介绍线性代数中的一种特殊矩阵形式:约当标准型。通过对约当标准型的定义、求法、性质及应用的介绍,希望读者能够深入理解和应用矩阵

    2024年02月04日
    浏览(42)
  • C++学习笔记-第11单元 标准模板库介绍

    注:本部分内容主要来自中国大学MOOC北京邮电大学崔毅东的 《C++程序设计》课程。 注:94条 C++程序规范。   本单元重点是对标准模板库中的 顺序容器 、 关联容器 的使用,以及 如何创建迭代器以遍历容器 。在使用容器时要注意不同容器的实现方式对遍历、搜索、删除、

    2024年02月13日
    浏览(40)
  • JAVA基础学习笔记-day15-File类与IO流

    博文主要是自己学习JAVA基础中的笔记,供自己以后复习使用,参考的主要教程是B站的 尚硅谷宋红康2023大数据教程 老骥伏枥,志在千里 --曹操《龟虽寿》 1.1 概述 File类及本章下的各种流,都定义在 java.io 包下。 一个File对象代表硬盘或网络中可能存在的一个文件或者文件目

    2024年01月21日
    浏览(38)
  • 七、标准IO和管道

    七、标准IO和管道 重定向I/O,为什么要进行重定向?可以帮我们解决什么问题? 使用管道符连接命令 1、I/O输入输出 显示器是Linux系统中创建默认的输出设备 I/O:input和output 重定向:将原本标准设备,替换为我们想要的内容 目的: 在shell脚本中对脚本输出的内容进行处理,

    2024年02月05日
    浏览(62)
  • 标准IO函数练习

    一、使用fgets实现计算一个文件有几行 二、用fread和fwrite实现文件拷贝

    2024年02月15日
    浏览(25)
  • 标准IO

     标准IO是库函数 是系统调用的封装 文件流:         1.具有方向性(读写)         2.具有连续性         3.具有顺序性 1.1 fopen FILE *fp = NULL; fp = fopen(\\\"m.txt\\\",\\\"r\\\");                  (\\\"要打开的文件名(以字符形式,所以要带引号)\\\", \\\"r/r+/w/w+/a/a+(也要带引号)\\\"); 成功返回   打开

    2024年02月21日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包