我正在阅读《C 编程语言》(第 2 版),但我不明白一个概念:

2023-12-12

我正在阅读“C 编程语言”(第 2 版),但我不明白一个概念。

有这段代码可以将输入复制到输出

#include <stdio.h>

main()
{
    int c;
    c = getchar();
    while (c != EOF) {
        putchar(c);
        c = getchar();
    }
}

在一开始的时候,c被声明为int类型变量,但如果我写类似“测试行”的内容,输出就是预期的“测试行”。我的问题是:怎么样c宣布为int类型变量但程序存储的空间足以存储很多字符?在计算机“内部”,它注册为字符数组?这个过程是如何进行的?


但如果我写类似“测试线”的内容,输出就是预期的“测试线”。

如何将“c”声明为int输入 variabel 但程序存储的空间足以容纳很多字符?

所有输入都不存储在变量中c同时,但在输入和输出缓冲区中。多变的c一次处理一个字符。

让我们回顾一下事件的发生顺序。

  1. main()启动并运行到getchar().

  2. getchar()等待输入。

  3. 用户类型t,操作系统缓冲该字符。

  4. 用户类型e s ...., e操作系统缓冲这些字符。

  5. User types Enter, the OS buffers the character '\n' and gives the buffer to stdin for getchar() to start using.

  6. getchar()回报t并保存在c.

  7. 代码继续putchar(c);并把t in the stdout buffer.

  8. 代码继续getchar();, 返回缓冲的e并保存在c.

  9. 代码继续putchar(c);并把e in the stdout buffer.

  10. 8 - 9 重复st line.

  11. 代码继续getchar();, 返回缓冲的\n并保存在c.

  12. 代码继续putchar(c);并把\n in the stdout缓冲。缓冲区现在被刷新到操作系统输出终端。输出现在可见。

  13. 返回步骤 2,直到没有可用的输入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我正在阅读《C 编程语言》(第 2 版),但我不明白一个概念: 的相关文章

  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 解析 JWT 令牌以仅获取有效负载内容,无需 C# 或 Blazor 中的外部库

    我正在使用 Blazor 编写可以访问 JWT 的客户端应用程序 我想知道一种简单的方法来读取令牌有效负载内容而不添加额外的依赖项 因为我不需要其他信息 也不需要验证令牌 我认为解析有效负载内容应该足够简单 只需将其写入方法即可 JwtTo
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • 从代码中,如何创建对存储在附加属性中的对象的属性的绑定?

    我们有一个继承的附加属性来存储一个对象 在可视化树的更下方 我们希望从代码绑定到该对象的属性 通常我们像这样构建绑定的路径部分 var someBinding new Binding Path new PropertyPath Attach
  • 如何使用 SOAP 且不使用 WSE 在 .NET 中签署 Amazon Web 服务请求

    亚马逊产品广告 API 以前称为 Amazon Associates Web Service 或 Amazon AWS 实施了一项新规则 即自 2009 年 8 月 15 日起 向其发送的所有 Web 服务请求都必须经过签名 他们在其网站上
  • 一元 +/- 运算符如何可能导致“-a”或“+a”中的整数提升,“a”是算术数据类型常量/变量?

    这句看似微不足道的台词摘自我的迈克 巴纳汉和布雷迪的 C 书 第 2 8 8 2 节 http publications gbdirect co uk c book chapter2 expressions and arithmetic h
  • C# 开源 NMEA 解析器 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 开源 NMEA 解析器 嗯 我自己也不熟悉 但是一些快速搜索显示了一个代码项目 htt
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • 如何在三个 IEnumerable 上使用 Zip [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Linq 从 3 个集合创建项目 https stackoverflow com questions 5284315 create items from 3 collections using
  • 如何连接以逗号分隔的命名范围的返回值

    我花了几个小时试图找出如何连接命名范围中的返回值 但结果是 运行时错误 32 类型不匹配 作为一个新手 我仍在与数组作斗争 所以也许我忽略了一些细节 谢谢你帮助我 示例 B1 苯 B2 柴油 B3 混合动力 gt E1 汽油 E2 柴油 E
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • jQuery 相当于 underscore.js 的 groupBy

    jQuery 中是否有一个内置函数可以执行相当于http underscorejs org groupBy http underscorejs org groupBy 有什么解决方法吗 Thanks 不 jQuery 不是为数据处理而设计的
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7
  • 将数组值导出到 csv 文件 java

    我只需要帮助将数组元素导出到 csv 文件 我不知道我的代码有什么问题 任何帮助将不胜感激 谢谢 for int index 0 index lt cols length index FileWriter fw new FileWriter
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo

随机推荐

  • 互斥问题

    请看一下下面的伪代码 boolean blocked 2 int turn void P int id while true blocked id true while turn id while blocked 1 id do nothi
  • pThread同步问题

    我面临 pthread 同步问题 threadWaitFunction1 是一个线程等待函数 我预计行号 第247章flag 1仅在 243 246 完成后执行 但我觉得奇怪的是 有时 在243 246还没有完成之前 它就直接跳到247 请
  • Algid 解析错误,不是序列

    当尝试使用该方法从文件中读取 RSA 私钥时 public PrivateKey getPrivateKey throws NoSuchAlgorithmException InvalidKeySpecException IOExcepti
  • 在多台计算机上获取修补程序并导出到 CSV

    如何在输出文件中正确使用 这是我的代码 get content computers txt Where AND Test Connection Quiet foreach Get Hotfix computername Select CSN
  • 在时间序列的背景下分解

    我有一个数据集 我想要整体可视化并按几个不同的变量进行分类 我创建了一个 Flexdashboard 其中包含一个闪亮的应用程序来选择分解类型 并使用工作代码来绘制正确的子集 我的方法是重复的 这向我暗示我错过了更好的方法来做到这一点 让我
  • Laravel:传递默认变量以查看

    在 Laravel 中 我们都以几乎相同的方式将数据传递到视图 data array thundercats gt Hoooooooooooh return View make myawesomeview data 但是有没有什么方法可以将
  • Tomcat 7 中的 URLRewrite

    我计划开发一个内联网应用程序 Java客户端 JSP SQLite 这样做的目标是 当用户单击链接时 如果用户有权访问 在业务逻辑中处理的团队 则应提供文件以供下载 数据库中有一个表保存信息 下面是示例行 ID file team md5
  • 设置大货币数字的格式

    使用 FormatStyle API 是否可以使用 20M 或 10k 等尾随 SI 单位来格式化大数字 特别是 我正在寻找一种使用适当的本地化和货币符号来格式化大货币值 例如 20M 的方法 我目前有一个货币格式化程序 extension
  • 按 Import-CSV 中的最大数值对对象进行排序

    我想要文件顶部的最大值 mailboxSize 我有一个简历作为输入 当我执行以下排序命令时 Import Csv import csv Sort Object MailboxSize DisplayName Descending Expo
  • C++ 函数原型?

    这是新手问题 5 但我没有老师 所以 无论如何 我们开始 我想知道是否有必要将函数原型放在文件顶部 而不是将main函数到文件末尾并在文件顶部创建所有函数 据我所知 VC 和 G 都没有抱怨 是否存在不允许我这样做的标准 当您更改函数参数和
  • 奇怪的 Ajax ComboBox 下拉列表

    我在某个面板中有组合框
  • 删除 display:flex 会在链接周围添加空格。为什么?

    我创建了一个 html 错误页面 它有 2 行显示错误 第二行有主页链接 为了使两条线保持在中心 我创建了一个顶层css grid并使网格的每一行成为flex 我注意到如果我使用display flex对于第二行 周围没有任何空间here链
  • jQuery .toggleClass 不切换 CSS 类

    The highlight开启时课程不工作 button 我究竟做错了什么 HTML
  • 图中2个节点之间的所有路径

    我必须制作一个无信息搜索 广度优先搜索 程序 该程序需要两个节点并返回它们之间的所有路径 public void BFS Nod start Nod end Queue
  • 全屏背景图像被拉伸

    我为我的一个客户制作了一张全屏背景图像 但问题是 当我使用以下 css 代码使图像适合所有屏幕时 bg image img position fixed left 0 top 0 width 100 max height 100 bg im
  • SQL:存储过程中的子句:如何传递值

    我想编写一个 SQL Server 2005 存储过程 它将从用户表中选择并返回一些用户 ID 的用户记录 这些用户 ID 作为参数传递给存储过程 这个怎么做 我可以将用户 ID 作为以逗号分隔的字符串传递 这样我就可以使用 select
  • scanf 和 strcmp 与 c 字符串

    我找到了一个不错的example如何使用 strcmp 但它只能与 fgets 一起使用 并且我需要使其与 scanf 一起使用 所以 这是代码 int main void char fruit apple n char ans 80 do
  • Linq to XML Noob 问题 - 属性上的不同和排序

    我刚刚开始使用 Linq to XML 我有一个简单的文档 其中包含如下记录
  • java.io.File 的 TreePath

    有没有什么简单的方法可以获得File or java nio file Path 就此而言 从TreePath 例如 您有一个JTree像这样 Green Blue Red Yellow Purple jpg Brown jpg Black
  • 我正在阅读《C 编程语言》(第 2 版),但我不明白一个概念:

    我正在阅读 C 编程语言 第 2 版 但我不明白一个概念 有这段代码可以将输入复制到输出 include