1

この関数はメニューから呼び出されます。

void exponentiation()
{

  int i, result = 0, first, second;

  printf("\n%s\n%s\n\n%s",
         "1) Exponentiation",
         "------------------",
         "Enter 1st integer: ");
  scanf("%d", &first);

  printf("Enter 2nd integer: ");
  scanf("%d", &second);

  printf("%d raised to %d equals %d\n", first, second, result);
  main();
}

この関数からユーザー入力を読み取る必要があります。ユーザー入力が整数なしで「Enter」の場合、main()を呼び出しているメニューに戻る必要があります。

私はすでに入力を取得しようとしました。例えば:

if(first == '\n')

{main();}

また

if(first == 10) /**which is 10 is ASCII code for enter**/

{main()}

どちらの方法でもまったく機能しませんでした、何か提案はありますか?

4

1 に答える 1

4

どちらの方法でもまったく機能しませんでした。

この関数scanfは、正常にスキャンされたアイテムの数を返します。そのリターンを確認し、期待と一致しない場合は戻る必要があります。


%dまた、空白を無視することを知っておく必要があります。したがって、ユーザーが整数を入力せずにreturnキーをscanf押すと、それをスキップして他の何かを待ちます。

このように空白を無視しないことを主張する場合は、。scanfなどの他の入力メソッドを避けて使用する必要がありますfgets。ユーザーから1行ずつ入力を取得し、を使用してsscanfstrtoulそれstrtokを理解します。

于 2013-03-17T13:34:02.867 に答える