【问题标题】:Simple C Menu Building, Scanf not haulting for input简单的 C 菜单构建,Scanf 不拖拽输入
【发布时间】:2013-10-20 04:33:23
【问题描述】:

我正在尝试制作一个具有菜单系统的程序,用户可以在其中选择一个选项,输入所需的数字,然后执行一些操作(在这种情况下是位移),然后返回菜单......但是,到目前为止,在测试此代码时,输​​出如下:

                 Main Menu    
                ---------    
1. Perform Left Bit Shift Operation (one value)
2. Perform Right Bit Shift Operation (one value)
3. Perform Binary AND Operation (two values)
4. Perform Binary OR Operation (two values)
5. Perform Binary One's Complement (~) Operation (one value)
6. Perform Binary XOR Operation (two values)
7. Quit 
1


Entered Integer: 0
Left Shifted: 0

它完全跳过我接下来的两个 scanf 语句,只打印我初始化的值。是什么导致了这个问题?另外,显示表示为位的整数的最简单方法是什么?我想让 showbit(int inttobit) 做的是接受一个整数并打印它的二进制表示(带有 32 个占位符): 例如:1234 = 00000000000000000000010011010010 无论如何,下面是我当前的代码:

#include <stdio.h>
#include <string.h>
#include <math.h>

void leftShift(int bit, int shift);
void showBits(int inttobit);

int main(void)
{
  int option;
  int value1=0,value2=0;

  while (option != 7)
    {
      printf("\n");
      printf("                Main Menu    \n ");
      printf("               ---------    \n");
      printf("1. Perform Left Bit Shift Operation (one value)\n");
      printf("2. Perform Right Bit Shift Operation (one value)\n");
      printf("3. Perform Binary AND Operation (two values)\n");
      printf("4. Perform Binary OR Operation (two values)\n");
      printf("5. Perform Binary One's Complement (~) Operation (one value)\n");
      printf("6. Perform Binary XOR Operation (two values)\n");
      printf("7. Quit \n");

      scanf("%d",&option);

      if (option == 1)
        {
          scanf("Enter a base 10 Integer: %d ", &value1);
          printf("\n");
          scanf("Enter number of places to shift bit: %d", &value2);
          printf("\n");
          leftShift(value1, value2);
        }
      else if (option == 7)
        {
        break; /* break out of loop */
        }
      else if (option < 0 || option > 9)
        {
          printf("Not an option... out of bounds\n");
        }
        }
      return(0);
}

void showBits(int inttobit)
{
  printf("\n");
  printf("Integer entered: %d\n", inttobit);
  printf("\n");
}
void leftShift(int bit, int shift)
{
  printf("Entered Integer: %d\n", bit);
  printf("Left Shifted: %d\n", shift);
}

非常感谢任何帮助或指导!

【问题讨论】:

    标签: c menu while-loop scanf


    【解决方案1】:
    scanf("Enter a base 10 Integer: %d ", &value1);
    

    这将尝试扫描整个字符串,包括Enter ... 文本。您需要 printf 提示和 scanf 只是输入,例如:

    printf ("Enter a base 10 Integer: ");
    scanf ("%d ", &value1);
    

    但请记住,这仍然不是非常健壮的输入代码。示例代码很好,但您希望生产代码更好一些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2020-05-29
      • 2012-04-02
      • 1970-01-01
      • 2011-04-14
      相关资源
      最近更新 更多