首页 > 其他分享 >常用标准IO

常用标准IO

时间:2024-01-27 20:44:34浏览次数:23  
标签:文件 常用 读取 stream IO 标准 int FILE size

标准IO

2024.1.27写

文件设置

FILE *fopen(const char *pathname, const char *mode)
//打开文件

  1. 返回值
    返回file指针,本质是结构体指针(赋值给FILE变量)//NULL

  2. 函数使用
    pathname 路径,mode 模式

mode  
r可读 r+可读可写  
w可写 w+可读可写,新建文件  
a可写,追加 a+可读可写,追加
FILE *file;//使用时要定义FILE结构体变量
file=fopen("./1.txt","r+");  
if(file==NULL)perror("打开文件失败");

size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)
//读取文件

  1. 返回值
    返回'完整'数据块个数(但都可以读取)//-1

  2. 函数使用
    *ptr 读取内容,size 要读取的数据块大小,字节 nmemb 打算读取几个数据块,*stream 要读取的文件

注意事项-数据块  
fread(buf,10,1,fd)//所有数据切成 10字节一份 读取1个数据块(一共10给字节)  
so 10,1 2,5 5,2 都一样 是10个字节

size_t fwrite(const void *ptr, ize_t size,size_t nmemb,FILE *stream)
//写入文件

  1. 返回值
    返回nmemb的值,也会给垃圾数//-1

  2. 函数使用
    *ptr 读取内容 ,ize 要写入的数据块大小,字节 nmemb 打算写入几个数据块,*stream 要读取的文件

注意事项-垃圾数
使用fwrite时 注意fread的返回值
//更好的写法
ret=fread(buf,1,100,file1);
fwrite(buf,1,ret,file2);
if(ret != 100)break;

fclose(FILE *file)
//关闭文件

  1. 返回值
    0//-1

光标设置

int fseek(FIEL *stream,long offset,int whence)
//移动光标//返回与lseek不同,其他相同

  1. 返回值
    0//-1

  2. 函数使用
    *stream 文件路径,offset 移动数,whence 起始位置

whence  
SEET_SET 文件开头 | SEET_CUK 原先位置 | SEET_END 文件末尾

int ftell(FIEL *stream)
//读取位置

  1. 返回值
    当前与起始位置的字节数//-1

void rewind(FILE *stream)
//移动光标至起始位置

字符串函数

fgets()/fputs()

  1. 读写文件
    char *fgets(char *s,int size,FILE *stream)
    //按行读取数据

    1. 返回值
      被读字符串首地址//-1

    2. 函数使用
      s存储字符数组,size被读字节(注意'\0' \r \n),FILE文件指针

    注意-读取时,最后一位为'\0',读取少一字节  
    条件:有size=5  
    size=5时 读4(少读一个,特点)  
    size=6时 全部读取
    size=7时,打印\n  
    在win系统下 回车=\r\n size=8时 打印\n
    

    int fputs(const char *s, FILE *stream)
    //按行写入数据(追加写入)

  2. 读写IO
    fgets(buf,100,stdin)
    //stdin(标准输入)
    fputs(buf,stdout)
    //stdout(标准输出)

    fgets  
    只认回车/回车也会被读入/只能读字符串,不能读数字  
    键盘/打印-因为键盘/屏幕,也是文件
    

gets()/puts()

char *gets(char *s)
//读取字符串 I

int puts(const char *s)
//输出字符串 O

fgets/gets区别
文件操作/字符操作

fgetc()/fputc()

int fgetc(FILE *stream)
//读取文件 一个ASCII值

  1. 返回值
    ASCII//-1

int fputc(int c, FILE /*stream)
//一个ASCII码值 写入文件


getc()/putc()

int getc(FILE *stream)
//从文件读取一个字符
int putc(int c,*stream)
//从文件输出一个字符

fgetc/getc区别
函数/宏(快一点,但参数不能有副作用)

getchar()/putchar()

int getchar()
//从IO缓冲区读取一个字符//读取键盘输入

int putchar()
//从IO缓冲区输出一个字符//显示屏幕输出

注意-缓冲区概念

标签:文件,常用,读取,stream,IO,标准,int,FILE,size
From: https://www.cnblogs.com/night000day/p/17991900

相关文章

  • 无涯教程-Socket.IO - 应用示例
    创建一个名为app.js的文件,然后输入以下代码来设置快速应用程序-varapp=require('express')();varhttp=require('http').Server(app);app.get('/',function(req,res){res.sendfile('index.html');});http.listen(3000,function(){conso......
  • jax框架为例:求hession矩阵时前后向模式的自动求导的性能差别
    注意:本文相关基础知识不介绍。给出代码:fromjaximportjacfwd,jacrevimportjax.numpyasjnpdefhessian_1(f):returnjacfwd(jacrev(f))defhessian_2(f):returnjacfwd(jacfwd(f))defhessian_3(f):returnjacrev(jacfwd(f))defhessian_4(f):ret......
  • Part 3:为什么 NetOps 是通往 AIOps 的桥梁
    转载网络运营(或NetOps)团队,传统上使用性能监控工具来管理企业网络的运行状况和性能。然而,网络使用量的增长加上分散的网络部署,导致许多人寻求替代的性能监控方法,包括使用人工智能进行IT运营(AIOps)。本文比较了NetOps实践中的传统性能监控方法,并讨论了团队最终转向采用AIOps的原......
  • 洛谷题解-P1673 [USACO05FEB] Part Acquisition S
    https://www.luogu.com.cn/problem/P1673题目描述奶牛们接到了寻找一种新型挤奶机的任务,为此它们准备依次经过N(1≤N≤5×104)N(1\leN\le5\times10^4)N(1≤N≤5×104)颗行星,在行星上进行交易。为了方便,奶牛们已经给可能出现的K(1≤K≤103)K(1\leK\le10^3)K(1≤K≤103)......
  • 无涯教程-Socket.IO - 环境
    要开始使用Socket.IO进行开发,您需要安装Node和npm(节点程序包管理器)。如果您没有这些,请转到节点设置,以在本地系统上安装节点。通过在终端中运行以下命令来确认已安装节点和npm。node--versionnpm--version您应该得到类似于以下内容的输出:v17.3.08.3.0打开终端,并在......
  • 2019-2020 ICPC Southwestern European Regional Programming Contest (SWERC 2019-20
    Preface这场总体打的不错,虽然最后RushL题失败,没有想到关键优化导致没卡过去有点可惜,但奈何徐神还是太C了最后10题下班,赛后祁神发现L关键优化10min改完就过了,同时赛中徐神也看出了E的做法,感觉这场时间充足甚至有AK的可能的说A.Environment-FriendlyTravel很典的一个题,不难......
  • Solution Set【2024.1.27】
    CF1778FMaximizingRoot首先不难证明不操作根节点一定不优,因此我们考虑操作根节点的情况。现在我们的问题转化为了:最大化操作根节点前的整个树的节点权值的最大公约数。由于可能的最大公约数值只有\(\mathcal{O}(\sqrt{V})\)种。因此我们考虑将其压入状态进行动态规划。设......
  • simulation roadmap
    thenextstepwouldbedevelopinganewmodellanguage.SIMANPegden,C.D.,IntroductiontoSIMAN,WinterSimulationConference1983.https://informs-sim.org/wsc83papers/1983_0004.pdfSturrock,D.T.,Pegden,C.D.,IntroductiontoSIMAN,ProceedingsWinte......
  • 无涯教程-Socket.IO - 简介
    Socket.IO是用于实时Web应用程序的JavaScript库。它支持Web客户端和服务器之间的实时双向通信。它包括两个部分:在浏览器中运行的客户端库和用于node.js的服务器端库,这两个组件具有相同的API。实时应用实时应用程序(RTA)是在用户感知为即时或当前的时段内运行的应用程序。实......
  • IO多路复用
    在Linux下,I/O多路复用是一种用于高效处理多个I/O操作的技术。它允许一个进程同时监视多个文件描述符或网络套接字,以便在其中任何一个发生I/O事件时能够及时响应。I/O多路复用的主要目标是提高系统的并发性能和资源利用率。通过同时监听多个I/O源,可以减少进程在等待I/O......