标准IO

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

 标准IO是库函数 是系统调用的封装

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

1.1 fopen

FILE *fp = NULL;

fp = fopen("m.txt","r"); 

                ("要打开的文件名(以字符形式,所以要带引号)", "r/r+/w/w+/a/a+(也要带引号)");

成功返回   打开的文件流指针 用 fp 接
失败返回   NULL

1.2 fclose 

fclose(fp);   直接关闭 fp 

成功返回 0 

失败返回  EOF(-1)               【一般不用返回值】;

char n = 一个单引号字符 或者 字符的ASCII值;

2.1 fputc  向流中写入一个字符

fputc (n, fp);        【前面要用“w”打开】

                        第一个位置必须是一个字符形式或ASCII形式;  

成功  返回写入字符的ASCII码值

失败  返回EOF                       【一般不用返回值】

2.2 fgetc  从流中读取下一个字符

n = fgetc(fp);        【前面要用“r”打开】

                        接收的必须是一个字符形式或ASCII形式;

成功返回    读到字符的ASCII码值

失败返回    EOF

读到文件末尾返回    EOF   【用来判断流里的内容是否结束】

char tmpbuff[4096] = {0};

3.1 fputs  向流中写入一个字符串

fputs(tmpbuff,fp);               【前面要用“w”打开】

成功返回   非负数

失败返回   EOF                  【用来判断数组里的内容是否结束】

3.2 fgets  从流中读取一个字符串

fgets(tmpbuff, 4096,fp);    【前面要用“r”打开】

        (要放到这个数组(首地址),最多读取字符的个数,文件指针流)

成功返回     存放字符串空间的首地址

失败返回      NULL

读到文件末尾返回    NULL     【用来判断流里的内容是否结束】

4.1 fwrite  向流中写入nmemb个对象,每个对象size字节大小,在ptr指向的空间中

fwrite((ptr)tmpbuff, 1, 4096, fp);

         (要向流中放入的东西(数组的首地址),每个对象的大小,写入多少个对象,流指针);

成功返回    写入对象的个数

失败返回    0

读到文件末尾返回   0 

4.2 fread  从流中读取nmemb个对象,每个对象size个字节,存放到ptr指向的空间中

 fread((ptr)tmpbuff, 1, 4096, fp);

          (要从流中拿出放入的数组(数组的首地址),每个对象的大小,写入多少个对象,流指针);

成功返回读到对象个数

失败返回0

读到文件末尾返回0 

5.1 fprintf  将格式化字符串输出到stream指向的流中

 fprintf((stream)fp,要输出的字符串);

== printf(stdout,要输出的字符串);

5.2 fsancf  从流中读取格式化的字符串

fscanf(fp, 此处同scanf一样); scanf("%d",&a)

6.1 ftell  获得流的偏移量

 ftell(fp);

6.2 rewind   将流的偏移量重新设置到开头

rewind(fp);

6 3. fseek 设置流的偏移量

 fseek(fp,偏移量, SEEK_SET  (文件开头)

                            SEEK_CUR (文件当前位置 )

                            SEEK_END (文件末尾 ) );

偏移量:               > n 向后偏移n
                             < n 向前偏移n.

7.特殊的三个流:

stdin   标准输入流          从终端读取数据

stdout  标准输出流          向终端打印数据

stderr  标准出错流          向终端打印数据 

自动打开自动关闭;

8..标准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

                人机交互、界面控制、出错处理
 文章来源地址https://www.toymoban.com/news/detail-831954.html

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

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

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

相关文章

  • Linux学习记录——사십삼 高级IO(4)--- Epoll型服务器(1)

    poll依然需要OS去遍历所有fd。一个进程去多个特定的文件中等待,只要有一个就绪,就使用select/poll系统调用,让操作系统把所有文件遍历一遍,哪些就绪就加上哪些fd,再返回。一旦文件太多了,遍历效率就显而易见地低。epoll是为处理大批量句柄而作了改进的poll,句柄就是

    2024年01月18日
    浏览(50)
  • 【Linux网络编程】TCP并发服务器的实现(IO多路复用select)

    服务器模型主要分为两种, 循环服务器 和 并发服务器 。 循环服务器 : 在同一时间只能处理一个客户端的请求。 并发服务器 : 在同一时间内能同时处理多个客户端的请求。 TCP的服务器默认的就是一个循环服务器,原因是有两个阻塞 accept函数 和recv函数 之间会相互影响。

    2024年02月03日
    浏览(78)
  • Linux搭建Web服务器(一)——阻塞与非阻塞、同步与异步、Linux五种IO模型

    目录 0x01 阻塞与非阻塞、同步与异步 阻塞与非阻塞 同步与异步 总结 0x02 Unix、Linux上的五种IO模型 阻塞(blocking) 非阻塞(non-blocking——NIO) IO复用(IO multiplexing) 信号驱动(signal-driven) 异步(asynchronous) 为了理清楚这几个概念,我们可以从 数据就绪 以及 数据读写 层面

    2023年04月10日
    浏览(62)
  • Linux学习记录——사십오 高级IO(6)--- Epoll型服务器(3)(Reactor)

    看完前两篇再看这篇,本篇将会写Reactor EpollServer.hpp中创建一个函数HandlerRequest,用它来做Recver函数的数据处理,也就是数据分析。 改一下回调函数,不向外暴露Connection类。 Main.cc中就不需要两个函数,一个计算函数就可以 处理数据那里再加上最后的步骤 回到Recver函数,调用

    2024年01月23日
    浏览(55)
  • Linux学习记录——사십사 高级IO(5)--- Epoll型服务器(2)(Reactor)

    本篇基于上篇代码继续改进,很长。关于Reactor的说明在后一篇 上面的代码在处理读事件时,用的request数组是临时的,如果有数据没读完,那么下次再来到这里,就没有这些数据了。所以得让每一个fd都有自己的缓冲区。建立一个Connection类,然后有一个map结构,让这个类和每

    2024年01月20日
    浏览(55)
  • Linux学习记录——사십사 高级IO(6)--- Epoll型服务器(3)(Reactor)

    看完前两篇再看这篇,本篇将会写Reactor EpollServer.hpp中创建一个函数HandlerRequest,用它来做Recver函数的数据处理,也就是数据分析。 改一下回调函数,不向外暴露Connection类。 Main.cc中就不需要两个函数,一个计算函数就可以 处理数据那里再加上最后的步骤 回到Recver函数,调用

    2024年01月20日
    浏览(42)
  • 【前端部署】vue项目打包并部署到Linux服务器

    在vs code中打开vue前端项目文件夹,在终端中输入 npm run build ,打包完成后,在前端项目文件夹中会生成一个名为 dist 的文件夹,如下图所示: dist文件夹打开如下所示: 打开服务器终端,在终端中输入以下命令,下载nginx安装包。 其中nginx版本可以自己选择,具体版本可查看

    2024年02月06日
    浏览(64)
  • day-08 基于Linux的网络编程(套接字和标准I/O、分离I/O流、epoll、多线程服务器)

    标准I/O函数(stdio)是在C语言中用于进行输入和输出操作的库函数 。它们包括了一组标准的输入和输出函数,如printf、scanf、fopen、fclose等。标准I/O函数具有以下优点: 简单易用 :标准I/O函数提供了简洁的接口,使得输入和输出操作变得简单易用。开发人员无需自行处理底层

    2024年02月09日
    浏览(59)
  • 服务器IO复用reactor模式

    调试: Linux下nc命令作为客户端: nc 127.0.0.1 7777

    2024年02月10日
    浏览(46)
  • TCP服务器的演变过程:IO多路复用机制select实现TCP服务器

    手把手教你从0开始编写TCP服务器程序,体验开局一块砖,大厦全靠垒。 为了避免篇幅过长使读者感到乏味,对【TCP服务器的开发】进行分阶段实现,一步步进行优化升级。 本节,在上一章节的基础上,将并发的实现改为IO多路复用机制,使用select管理每个新接入的客户端连

    2024年02月03日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包