1

正確な値の数を期待せずに、ユーザーが入力した値の数に基づいて入力したい。

私のプログラムでは、ユーザーに整数を入力してもらいたいのですが、問題は、ユーザーが 1 つまたは 2 つのスペースで区切られた整数を入力できるようにしたいということです。

したがって、ユーザーがスペースで区切られた 2 つの整数を入力すると、それらは変数 a と b に格納され、Enter キーを押す前に数字を 1 つだけ入力すると、a に格納され、プログラムは 2 番目の数字を待たずに先に進む必要があります。 .

それを行う最善の方法は何ですか?

4

4 に答える 4

2

あなたはそれを簡単に行うことができるようですscanf

int a,b;
char c[1];
int n = scanf("%d%0[ ]%d",&a,&c,&b);

スペースで区切られている場合にのみ読み取るbため、改行で停止します。

n読み取られたフィールドの数(セパレーターを含む)が含まれます。

それが完全に有効なのか、クロスプラットフォームなのかはわかりません。本格的なプログラムに入れる前に、ドキュメントを確認する必要があります。

于 2012-06-12T10:46:18.063 に答える
2

必要に応じて解析するよりも、入力全体を文字配列として取得してみてください。

于 2012-06-12T10:25:34.983 に答える
2

自分でそれを行う方法を考えてから、それをコードに変換します。

  • 入力から行を取得する
  • 空白でトークン化する
  • トークンが変換可能な整数であることを確認してください
于 2012-06-12T10:26:11.703 に答える
1

を使用して行全体を文字列として読み取り、fgets()必要な整数に解析する必要があります。

于 2012-06-12T10:25:36.420 に答える