0

こんにちは、C で switch ステートメントを使用してインタラクティブなメニューを作成しようとしています。ただし、特定の引数を持つ関数をトリガーする方法がわかりません。私はまったくの初心者で、これを行う方法に困惑しています。switch ステートメントの関数には引数が必要ですが、関数で数値を要求したいと思います。私はこれを課題として行っており、実際のコードを提供できないため、このモックアップを作成しました。ご協力ありがとうございました。

これが私が使用するかもしれないコードの例です。

#include <stdio.h>

void printMenu()
{
    int choice;

    do
    {
        printf("Main Menu:\n");
        printf("1) do this\n");
        scanf("%d", &choice);

        switch (choice)
        {
            case 1:
                function(); /* though this needs the arguments */
                break;
        }
    } while (choice != 7);

    int main(void)
    {
        printMenu();
        return 0;
    }

    void function(int number1, float number2)
    {
        /*calculation*/
        printf("enter your numbers");
        /* Not sure how to read the numbers in here */
        printf("%d + %d = %d", number1, number2, number1 + number2);
        return;
    }
4

3 に答える 3

1

switchできるだけ最小限にしたい場合は、入力を取り込んで関数を呼び出す別の関数を呼び出すだけです...

case 1:
   read_input_and_function()
   break;

...

void read_input_and_function(void)
{
   printf("Enter your numbers: ");
   /* scanf number1, number2 */
   function(number1, number2);
}
于 2013-03-18T02:58:28.003 に答える
1

switch ステートメントの関数には引数が必要ですが、関数で数値を要求したいと思います。

最初に引数を聞いてから、関数を呼び出すのはどうですか。このようにして、2 つの引数を 1 回宣言して、同じ switch の他の関数で使用できますが、選択したケースに従って定義することができます。

void function1(int, float);

   void printMenu()
   {

     int choice = 0 , num1 = 0;
     float num2 = 0;

     do
      {
          printf("Main Menu:\n");
          printf("1) do this\n");
          scanf("%d", &choice);

          switch (choice)
          {
              case 1:
                  printf("\nEnter number 1\n");
                  scanf("%d",&num1);
                  printf("\nEnter number 2\n");
                  scanf("%f",&num2);
                  function1(num1,num2);
                  break;
          }
      } while (choice != 7);
    }
于 2013-03-18T03:59:10.517 に答える