fread实现的getchar代码:

inline char get() {
static char buf[100000], *p1 = buf, *p2 = buf;
return p1 == p2 && (p2 = (p1 = buf) + fread(buf,1,100000,stdin),p1 == p2) ? EOF : *p1 ++;
}

以下内容由chatgpt生成:

上面的代码定义了一个名为get()的内联函数,它从标准输入读取字符并返回。

首先,该函数使用了一个静态字符数组buf,大小为100000。静态数组意味着它在函数调用之间保持不变,所以每次调用get()函数时,buf的内容会保留,而不会重新分配内存。

然后,函数定义了两个指针变量p1p2,并将它们初始化为指向buf的首地址。这两个指针变量用于指示当前已经读取的字符位置。

接下来,函数返回一个表达式的结果,该表达式首先检查p1是否等于p2,这意味着当前的字符已经全部被读取完毕,需要重新从标准输入读取。如果是这种情况,以下操作将被执行:

  1. buf重新填充为从标准输入读取的字符,最多读取100000个字符。
  2. p1p2分别重置为buf的首地址,并检查p1是否等于p2。如果仍然相等,意味着文件结束,返回EOF。
  3. 否则,返回p1所指向的字符,并将p1向前移动一个位置,以指示下一个要返回的字符。

如果p1p2不相等,即还有未读取的字符,那么返回p1所指向的字符,并将p1向前移动一个位置。

这样,每次调用get()函数时,它将返回标准输入中的下一个字符,并且在内部会自动处理缓冲区的读取和填充。

fread实现getchar(加速!!!)的更多相关文章

  1. C++ 代码小技巧(一)

    在写代码的时候,我们常常会用一些小技巧,下面做简单介绍 一.o1+o2+o3(常数优化) 如题,开优化开关. 有的OJ上有O2优化选项,当然,你也可以这样:在代码开头这样加一句: #pragma GC ...

  2. 文件内容操作篇clearerr fclose fdopen feof fflush fgetc fgets fileno fopen fputc fputs fread freopen fseek ftell fwrite getc getchar gets

    clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * stream); 函数说明 ...

  3. C++ 加速(卡常)技巧【超级 快读、快写】

    C++ \texttt{C++} C++ 加速技巧 快读快写 快读 inline int read() { int x = 0, w = 0; char ch = 0; while (!isdigit ...

  4. C++之函数fgetc和fputc、fgets和fputs、fread和fwrite、fscanf和fprintf用法小结

    #include <iostream> #include <cstdio> #include <cstdlib> using namespace std; int ...

  5. ACM 关于数据输入加速

    转载请注明出处:http://blog.csdn.net/a1dark 分析:我们都知道运行时间对我们来说很重要.有时候不惜用大量的内存去换取一点时间.有些人可能都比较关注这个问题.首先时间上:cin ...

  6. fread读入优化,寻找速度极限

    序: 在之前的测试中,我们比较了四种读入方式,发现使用读入优化是最快的选择,但是我们知道fread()是比它更快的方法.这一次,我们对比四种读入优化,探寻C++读取速度的极限. 分别是getchar( ...

  7. fread函数详解

    函数原型: size_t   fread(   void   *buffer,   size_t   size,   size_t   count,   FILE   *stream   )    b ...

  8. HDU 1556 BIT区间修改+单点查询(fread读入优化)

    BIT区间修改+单点查询 [题目链接]BIT区间修改+单点查询 &题解: BIT区间修改+单点查询和求和的bit是一模一样的(包括add,sum) 只不过是你使用函数的方式不一样: 使用区间的 ...

  9. luogu4159 迷路 (矩阵加速)

    考虑如果只有距离为1的边,那我用在时间i到达某个点的状态数矩阵 乘上转移矩阵(就是边的邻接矩阵),就能得到i+1时间的 然后又考虑到边权只有1~9,那可以把边拆成只有距离为1的 具体做法是一个点拆成9 ...

  10. Luogu P3390 【模板】矩阵快速幂&&P1939 【模板】矩阵加速(数列)

    补一补之前的坑 因为上次关于矩阵的那篇blog写的内容太多太宽泛了,所以这次把一些板子和基本思路理一理 先看这道模板题:P3390 [模板]矩阵快速幂 首先我们知道矩阵乘法满足结合律而不满足交换律的一 ...

随机推荐

  1. Maven项目配置

    pom.xml配置 配置编码格式为UTF-8 <properties> <project.build.sourceEncoding>UTF-8</project.buil ...

  2. PostgreSQL 10 文档: PostgreSQL 服务器程序

    PostgreSQL 服务器应用 这一部分包含PostgreSQL服务器应用和支持工具的参考信息.这些命令只在数据库服务器所在的主机上运行才有用.其他工具程序在PostgreSQL 客户端应用中列出. ...

  3. js将数字金额转换成中文金额格式

    在开发中我们经常会遇到处理数字的问题,下面介绍一种处理数字金额转换为中文金额的方式: 我们通常使用三种书面数字系统:全球使用的阿拉伯数字系统和两种本地数字系统(繁体.简体).常规时我们使用阿拉伯数字( ...

  4. STA学习笔记-0

    如今的逻辑设计复杂度和工作频率要求越来越高.为了保证设计稳定可靠,必须对设计附加时序约束,对综合实现结果进行时序分析. 导言 时序约束:主要用于规范设计的时序行为,表达设计者期望满足的时序条件,指导综 ...

  5. Llama2 论文中译版——开放式基础和微调聊天模型

    Llama 2:开放式基础和微调聊天模型 写在前头 因为最近一直在使用 LLM 工具,所以在学习 Llama 2:开放式基础和微调聊天模型 这篇论文的期间,顺手将内容翻译了过来. 整片译文是由 Cha ...

  6. Windows 下搭建 Appium + Android+python 自动化测试环境

    前言 本来并不打算写这么一篇文章,但是实践下来发现网上的各种教程里大致有两个问题.一是文章有些跟不上时代,目前android开发和测试的技术更新都比较快,内容有些过期.二是细节部分不是太完整,拼拼凑凑 ...

  7. msfvenom参数简介

    -p, –payload < payload> 指定需要使用的payload(攻击荷载).也可以使用自定义payload,几乎是支持全平台的 -l, –list [module_type] ...

  8. 1.0 Python 标准输入与输出

    python 是一种高级.面向对象.通用的编程语言,由Guido van Rossum发明,于1991年首次发布.python 的设计哲学强调代码的可读性和简洁性,同时也非常适合于大型项目的开发.py ...

  9. c# 如何将程序加密隐藏?

    下面将介绍如何通过LiteDB将自己的程序进行加密,首先介绍一下LiteDB. LiteDB LiteDB是一个轻量级的嵌入式数据库,它是用C#编写的,适用于.NET平台.它的设计目标是提供一个简单易 ...

  10. 论文解读(MCADA)《Multicomponent Adversarial Domain Adaptation: A General Framework》

    Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ] 论文信息 论文标题:Multicomponent Adversarial Domain Adaptation: A Gener ...