循环在第一次后跳过 scanf 语句

2023-12-11

这是 main() 的代码:

int main (void)
{
float acres[20];
float bushels[20];
float cost = 0;
float pricePerBushel = 0;
float totalAcres = 0;
char choice;
int counter = 0;

for(counter = 0; counter < 20; counter++)
{   
    printf("would you like to enter another farm? "); 

    scanf("%c", &choice);

    if (choice == 'n')
    {
        printf("in break ");
        break;
    }

    printf("enter the number of acres: ");
    scanf("%f", &acres[counter]);

    printf("enter the number of bushels: ");
    scanf("%f", &bushels[counter]);

}


return 0;
}

每次程序运行第一次 scanf 时都工作正常,但在第二次循环中,用于输入字符的 scanf 不会运行。


前面加一个空格%c in scanf。这将允许scanf在阅读之前跳过任意数量的空格choice.

scanf(" %c", &choice);是唯一需要的更改。

添加一个fflush(stdin); before scanf("%c", &choice);也会起作用。fflush在通过 scanf 读取下一个输入之前,调用将刷新输入缓冲区的内容。

的情况下scanf(" %c", &choice);即使输入读取缓冲区中只有一个字符,scanf会将此字符解释为有效的用户输入并继续执行。不正确地使用 scanf 可能会导致一系列奇怪的错误 [比如在内部使用时出现无限循环while loop].

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

循环在第一次后跳过 scanf 语句 的相关文章

随机推荐

  • 针对 Access 数据库的 pyodbc 查询出现“可选功能未实现”错误

    对于任何可以提供帮助的人 提前表示感谢 我正在运行 64 位 Windows 10 64 位 Office 和 64 位 python 3 7 2 使用 pyodbc 我尝试执行如下所示的 Select 语句 SELECT FROM Eco
  • Flutter中如何动态生成多个Dropdown?

    我有 Java 背景 对 Flutter 很陌生 我陷入了需要动态创建多个下拉列表的场景 例如 有一项披萨优惠提供 2 个大披萨 2 个小披萨和 1 份饮料 因此 每当顾客选择任何披萨时 他 她必须选择一种口味 如果有 2 个大披萨 我需要
  • Chart.js v2:甜甜圈内甜甜圈之间的空间

    我正在使用 Chart js v2 5 0 我把甜甜圈放在甜甜圈里面 我想要两个甜甜圈之间的距离 A 变大而不影响同一甜甜圈内切片之间的距离 B 请看下图 目前我正在使用该房产边框宽度 然而 这也会影响宽度B 请看下面的代码 options
  • 为什么 akka 需要不可变消息

    或者换句话说 可变消息是否有正确的用途 我面临的用例是我想要处理基本上属于类型的对象 Map
  • SimpleHttpOperator Airflow,数据模板化

    我正在尝试正确渲染data里面一个SimpleHttpOperator在 Airflow 中 并通过我发送的配置dag run result SimpleHttpOperator task id schema detector http c
  • `%in%` 和 `==` 有什么区别?

    df lt structure list x 1 10 time c 0 5 0 5 1 2 3 0 5 0 5 1 2 3 Names c x time row names c NA 10L class data frame df df
  • 关于Struts2中的Action映射 - 没有映射Action

    我正在尝试运行我的 struts 应用程序 但收到错误操作未映射我已经看到名称空间是正确的 但仍然收到错误 struts xml
  • 响应式 2 列 CSS 布局,包括固定宽度的侧边栏?

    在任何地方都找不到这个问题的解决方案 我猜这一定是一个非常常见的问题 我正在创建一个带有侧边栏的响应式设计 其中侧边栏需要具有 200px 的固定宽度 并且高度未知 我怎样才能使主要内容区域占据所有剩余宽度 而不会出现任何异常行为 我最接近
  • 如果 scalatest 中的 FunSpec 的 afterEach 测试失败,如何确定

    在使用 FunSpec 的 scalatest 中 我有一些在 afterEach 中触发的代码 我想仅在测试失败时执行一些代码来获取屏幕截图 我所看到的几乎所有内容都试图通过将断言放入 try 块中来解决这个问题 这看起来很糟糕 Test
  • 如何等待回调函数返回?

    我正在使用phonegap 制作一个android 应用程序 我正在使用phonegap 的Storage api 来查询数据库 这是我的代码 function directPath src dest var db window openD
  • 自动调整文本输入框html大小

    我创建了一个输入 键入文本 框并使其自动调整大小非常简单 但是 有一些我似乎无法修复的故障 当我开始打字时 盒子缩小了一点 当我按退格键 或方向箭头 时 该框首先展开 然后在我继续键入时缩小 这是我的代码 function Expander
  • 反转生成的 vtable 函数顺序(具有相同名称的函数)

    如果使用 Visual Studio 2019 我使用两个具有相同名称但不同参数的虚拟方法来编译此 C 代码 struct MyStruct virtual void foo float 0 virtual void foo int 0 c
  • VBA中字符串的串联和最大长度,访问

    我在 access vba 中的字符串方面遇到了严重的问题 问题是 access 有时 将字符串的长度限制为大约 255 个字符 但是 根据字符串的构建方式 它可能会增长到超过 255 个字符 有一个工作代码的示例 Dim strReq a
  • 将父鼠标事件应用于子元素

    我正在制作小型 Windows 窗体应用程序 我里面有 PictureBox 父 和 Label 子 父元素的鼠标事件工作正常 但子元素生成的鼠标事件不会反映在父元素上 光标也会变回默认值 箭头 是否有可能pass由子控件生成的事件 例如M
  • 条件 SQL 计数

    创建计算表中数据出现次数的列的最佳方法是什么 表格需要按一列分组 我的数据库是 PostgreSQL 我见过 SELECT sum CASE WHEN question1 0 THEN 1 ELSE 0 END AS ZERO sum CA
  • Python 标准库,信号 :: AttributeError:模块“信号”没有属性“SIGALRM”

    我正在尝试设置函数超时 但是没有成功 我运行示例代码https docs python org 3 library signal html highlight signal 20sigalrm example 但是 我得到Attribute
  • Firebase Angular2 - 如何在没有太多开销的情况下查询和渲染列表

    在我的应用程序中 我有以下 firebase posts 结构 posts text meta user id user1 username 我正在使用 AngularFire2 因此 为了获取特定用户发布的所有帖子 我运行以下查询 thi
  • jQuery .html() 和里面的变量

    我想把变量FLC放在里面 FNC html 但不知道怎么做 有什么建议吗 DEMO var FLV random input box val FNC html
  • 非成员函数是否可以返回 const 值?

    如果是这样 怎么办 这个问题还有道理吗 就我而言 调用者修改返回的对象是没有意义的 因此我想将其标记为不可修改 const MyClass foo 是有效的 但返回 const 值没有意义 无论如何它都会被复制 您可以返回 例如常量引用 c
  • 循环在第一次后跳过 scanf 语句

    这是 main 的代码 int main void float acres 20 float bushels 20 float cost 0 float pricePerBushel 0 float totalAcres 0 char ch