代码运行,但说无效

标签 c invalidation

当我运行我的程序时,它要求输入命令,当您输入 a、b 或 c 时,它会提示您根据您选择的值给出字母。列出的任何其他命令都会显示统计信息。我的小问题是,当我输入有效命令时,会弹出“无效命令”警告,即使它有效

#include <stdio.h>

int main(void)
{
   double a = 0;
   double b = 0;
   double c = 0;
   double d = 0;
   double e = 0;
   double f = 0;
   double g = 0;
   double h = 0;
   double i = 0;

   char command = '\0';

   printf("\n      Welcome\n");
   printf("     Aquapodz Stress Analysis Program\n");
   printf("    ==================================\n");
   while (command != 'x');
   {
      printf("\n\n(a), (b), or (c), enter trial data for        vendor.\n(f)ail-rate,     (m)ean stress, (s)ummary, e(x)it\n");
      printf("Please enter a command");
      scanf("%c", &command);

      if (command == 'a')
      {
         printf("Please enter stress values (GPa) for this trial.");
         scanf("%lf", &a);
         scanf("%lf", &b);
         scanf("%lf", &c);
      }
      else if (command == 'b')
      {
         printf("Please enter stress values (GPa) for this trial.");
         scanf("%lf", &d);
         scanf("%lf", &e);
         scanf("%lf", &f);
      }
      else if (command == 'c')
      {
         printf("Please enter stress values (GPa) for this trial.");
         scanf("%lf", &g);
         scanf("%lf", &h);
         scanf("%lf", &i);
      }
      else if (command == 'f')
      {

         printf("Average failure rate:\nAzuview:%f\nBublon:%f    \nCryztal:%f\n",        a+b+c, d+e+f, g+h+i);
      }
      else if (command == 'm')
      {
         printf("Average mean stress:\nAzuview:%f\nBublon:%f\nCryztal:%f\n",         a+b+c/3, d+e+f/3, g+h+i/3);
      }
      else if (command == 's')
      {
         print("Total (pass / fail) so far:\nAzuview:%f(%f/0)\nBublon:%f(%f/0)        \nCryztal:%f(%f/0)\n", a+b+c, a+b+c, d+e+f, d+e+f, g+h+i, g+h+i);
      }
      else if (command == 'x')
      {

      }
      else
      {
         printf("Invalid Command! Please Try Again :)");
      }

   }
   printf("Goodbye, Please Come Again!");
   return 0;
}

最佳答案

  scanf("%c", &command);

是问题所在。您最终会读取上次调用 scanf 时留下的换行符。使用

  scanf(" %c", &command);

关于代码运行,但说无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31346415/

相关文章:

iphone - 进入后台时使 NSTimer 无效

macos - 如何阻止CFSocket发送回调?

Android:如何让自定义 View 部分重绘?

c - printf 如何在 CUDA 计算上工作 >= 2

在 C 中控制 fork

java - C 和 Java 中的条件相同但输出不同

c# - 使用 C# 扫描 Redis 缓存中的缓存键

c - 是否可以使用并行 Travelsar 在二叉搜索树中查找元素

c - 空函数C递归

ios - NSUrlsession 已触发,url 未调用,但结果