为什么 getchar() 在 scanf() 之后不等我按 Enter 键?

2023-12-31

我正在学习 C,我正在使用“getchar()”来停止命令窗口,这样我就可以看到正在进行的练习,但它不起作用。这是一个示例:

#include <stdio.h>

int main()
{
    int value;
    printf("1. option 1.\n2. option 2.\n3. option 3.\n4. Exit\n\nMake an option: ");
    scanf("%d", &value);
    switch (value)
    {
        case 1:
            printf("you selected the option 1.");
            break;
        case 2:
            printf("you selected the option 2.");
            break;
        case 3:
            printf("you selected the option 3.");
            break;
        case 4:
            printf("goodbye");
            break;
        default:
            printf("thats not an option");
            break;
    }
    getchar();
    return 0;
}

这是输出:

  1. 选项1。
  2. 选项2。
  3. 选项3。
  4. Exit.

做出一个选项:1

您选择了选项 1。

进程返回 0 (0x0) 执行时间:3.453 s

按任意键继续。

为什么不等待“getchar()”的输入?


你的 scanf 只吃了数字,但没有吃掉尾随的换行符。在 %d 之后添加换行符或空格将会给你带来相反的问题,读得太远。

这就是人们不喜欢scanf的原因。

我建议阅读实际的行(使用fgets(3))然后使用sscanf()扫描字符串。

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

为什么 getchar() 在 scanf() 之后不等我按 Enter 键? 的相关文章

  • 使用链表进行堆排序

    我想知道是否有人曾经使用链表进行堆排序 如果他们可以提供代码 我已经能够使用数组进行堆排序 但尝试在链表中进行排序似乎不切实际 而且在你知道的地方很痛苦 我必须为我正在做的项目实现链接列表 任何帮助将不胜感激 我也用C 答案是 你不想在链表
  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到
  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • 2个对象,完全相同(除了命名空间)c#

    我正在使用第三方的一组网络服务 但遇到了一个小障碍 在我手动创建将每个属性从源复制到目标的方法之前 我想我应该在这里寻求更好的解决方案 我有 2 个对象 一个是 Customer CustomerParty 类型 另一个是 Appointm
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • 为什么这个 makefile 在“make clean”上执行目标

    这是我当前的 makefile CXX g CXXFLAGS Wall O3 LDFLAGS TARGET testcpp SRCS main cpp object cpp foo cpp OBJS SRCS cpp o DEPS SRCS
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • if constexpr 中的 not-constexpr 变量 – clang 与 GCC

    struct A constexpr operator bool const return true int main auto f auto v if constexpr v A a f a clang 6 接受该代码 GCC 8 拒绝它
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • 调用 .ToArray() 时出现 ArgumentException

    我有一个经常被清除的列表 代码完全是这样的 VisitorAgent toPersist List
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • 任何人都可以清楚地告诉如何在不使用像 这样的预定义函数的情况下找到带有小数值或小数值的指数吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 例如 2 0 5 1 414 所以想要 我是 c 的新手 所以请解释简单的逻辑 如果不是复杂的逻辑也足够了 在数学中 从整数取幂到实数
  • Streamwriter 覆盖 txt 文件中的文本

    有没有什么方法可以重新打开流写入器而不创建新的写入对象 因为此时 当调用 WriteOdd 时 streamwriter 正在覆盖在它之前调用的 WriteEven public void WriteEven StreamWriter wr
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • 如何在 ASP.NET Core 中注入泛型的依赖关系

    我有以下存储库类 public class TestRepository Repository

随机推荐

  • 数组作为类的私有成员

    我正在尝试创建一个具有私有成员 数组 的类 我不知道数组的大小 直到将值传递到构造函数中才知道 定义类构造函数以及 h 文件中的定义以允许数组大小可变的最佳方法是什么 如果你想要一个 真正的 C 风格数组 你必须向你的类添加一个指针私有成员
  • 为什么此代码在 Xcode 模拟器上有效,但在设备上不起作用?

    我真的希望有人向我解释一下 我正在编写一个使用其设备 MAC 地址的应用程序 并且此代码在模拟器上完美运行 但在设备上不起作用 我从问题中得到了这个代码在 Objective C 中获取路由器 mac 无需系统调用 ARP https st
  • 有效的重新排序 - 根据新的 JMM

    我只是想知道以下重新排序在新的 JMM 模型下是否有效 Original Code instanceVar1 value normal read operation no volatile synchronized this instanc
  • 使用 Java 11 的独立 Nashorn 在 eval 时抛出 java.lang.StackOverflowError

    我遇到了 Nashorn 的一个问题 当评估一个大表达式时 它在 Java 8 中工作正常 但抛出一个java lang StackOverflowError在Java 11中 Exception in thread main java l
  • 初始化 GUID 变量:如何?

    我正在尝试初始化一个GUID http msdn microsoft com en us library windows desktop aa373931 28v vs 85 29 aspx变量 但我不确定这就是你应该做的事情 我特别困惑的
  • 如何根据其他变量设置一个变量

    我正在使用谷歌电子表格脚本 我在那里跟踪我的调度 我创建了一个按钮 按下该按钮时 将使用您所在的行来创建日历事件 我当前正在处理的问题是查找事件的任务类型和日期 我正在处理的 3 个专栏是 交付 集成 培训 都是日期 我的第一个 if el
  • 使用 CSS 实现鼠标点击放大和缩小

    我想仅使用 CSS 来缩放图像 下面的代码在按住鼠标左键时缩放图像 但我想通过单击鼠标来放大和缩小 我怎样才能做到这一点 container img transition transform 0 25s ease cursor zoom i
  • iOS - 使用外观全局更改导航栏标题颜色?

    这会使应用程序崩溃 UINavigationBar appearance setTitleColor UIColor darkGrayColor forState UIControlStateNormal 有没有办法使用外观来做到这一点 这
  • 为什么 CLLocationManager 在模拟器中的 iphone SDK 4 beta 上返回空位置?

    我有这段代码 void locationManager CLLocationManager manager didUpdateToLocation CLLocation newLocation fromLocation CLLocation
  • 如何对绑定到自定义对象集合的 DataGridView 进行排序?

    所以我一直在关注本指南适用于 Windows 窗体控件上的数据绑定 http www codeproject com Articles 24656 A Detailed Data Binding Tutorial MAD 支持作者 这个指南
  • 什么时候TextureView的“消费者端”关闭?

    Camera2 API 的 Google 官方示例之一 https github com googlesamples android Camera2Basic患有相同BufferQueue has been abandoned proble
  • 调整 JTable 中的一个单元格而不是整行

    我遇到了一个小问题 正在努力解决它 基本上发生的事情是我有一个 JTable 它由我从 API 调用获得的数组填充 我目前所拥有的是 如果设备显示为在线 它将变为绿色 如果离线 则变为浅灰色 问题是它影响整个 ROW 而不仅仅是状态 CEL
  • 是否可以在android程序中使用com.sun.net.httpserver包?

    我想在 Android 中创建一个 HTTP 服务器 我想在这个程序中使用 com sun net httpserver 您认为 可以在Android程序中使用这个包吗 我写了一个服务来做到这一点 我的程序如下 import android
  • 可重复读取和第二次丢失更新问题

    使用可重复读隔离级别 仍然有可能丢失更新 第二个丢失更新问题 例如 在隔离级别设置为RR的场景中 1 事务t1从r1行读取数据 2 事务t2从r1行读取相同的数据 3 t1修改 1中读取的数据并将数据提交给r1 4 t2修改 2中读取的数据
  • 从 jquery 调用 json web 服务时出错

    我在谷歌上搜索了同样的问题 但似乎找不到任何帮助 如有任何帮助 我们将不胜感激 我用 C 创建了一个 webservice asmx WebMethod ScriptMethod public ListObj GetList string
  • 如何使 leftBarButtonItem 看起来像 backBarButtonItem?

    默认的解决方案不合适 更改之前的 ViewController 标题 我需要创建自己的函数来控制按钮的触摸 制作 leftBarButtonItem 并隐藏 backBarButtonItem leftBarButtonItem 看起来不像
  • Win32 消息框不出现

    我遇到了一个奇怪的问题 我正在 VC 2008 中制作一个 Win32 应用程序 制作一个类来封装大部分工作 以便在调用时轻松重复MessageBox 消息框已创建 我认为 但除非我按 Alt 键 否则不会显示 到底发生了什么 我运行程序
  • 添加%20而不是空格

    我想这是一个小问题 但我不得不在这里问 因为我的项目不够了 当我将字符串传递给另一个控制器中的函数时 它将空格更改为 20 符号 我猜控制器认为字符串作为 url 传递并对其进行编码 但我不知道如何删除它 或者如果可能的话不要让它将空格更改
  • 如何使用 .aspx 文件检查服务器上运行的 ASP .NET MVC 版本?

    例如 对于 NET 版本 我用以下方法解决 The NET version is 但是 ASP NET MVC 版本又如何呢 提前致谢 typeof Controller Assembly GetName Version
  • 为什么 getchar() 在 scanf() 之后不等我按 Enter 键?

    我正在学习 C 我正在使用 getchar 来停止命令窗口 这样我就可以看到正在进行的练习 但它不起作用 这是一个示例 include