【问题标题】:While loop is repeating once more [closed]虽然循环再次重复[关闭]
【发布时间】:2017-11-16 19:19:43
【问题描述】:

我不知道我的代码出了什么问题,它又重复了一次。

do { 
         scanf("%c", &operacao);
        //Tratamento de erro (Validando a informacão vinda do usuário
        if ((operacao != '*') && (operacao != '+') && (operacao != '-')) {
            printf("---------------------------------------\n");
            printf("*****       MENSAGEM DE ERRO      *****\n");
            printf("---------------------------------------\n");
            printf("Você digitou um valor inválido!\n");
            printf("Por favor, digite + para soma, - para subtração * para multiplicar ou / para dividir!\n");
        }
    } while ((operacao != '*') && (operacao != '+') && (operacao != '-'));

【问题讨论】:

  • 听起来您可能需要学习如何使用调试器来单步调试您的代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。延伸阅读:How to debug small programs
  • 1.阅读后打印operacao。 2. 歌剧是什么类型的?打印该值将帮助您理解 while 循环。
  • 既然你标记为 C++,你应该考虑cin >> c 而不是scanf
  • 需要查看scanf的返回值。 scanf 返回参数的数量satisfied 或 -1 如果有错误。不要相信用户输入正确的数据。

标签: c++ c input char


【解决方案1】:

使用下面的语句

scanf(" %c", &operacao);
      ^^^ 

否则也会读取空白字符(例如与按下的 Enter 键对应的换行符 '\n')。

【讨论】:

  • 谢谢提示 - 我已经解决了这个问题。无论如何,谢谢您的关注。
  • @AlexSousa 完全没有。不客气。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 2011-12-03
  • 2013-11-21
相关资源
最近更新 更多