2

私はC++を知っていますが、最初のCプログラムを作成しようとしています。ユーザーから1行の入力を取得し、それを10個の異なる数値に変換できるようにしたいと考えています。たとえば、ユーザーはいくつかの数字を入力するように求められ、最大10個の数字を入力します。

最大10個の数字を入力します。

> 34412 12455 435234 44199 4735890 034001 154595

次に、それらを配列に格納し、後でそれらを使用して処理を実行したいと思います。入力を取得する方法を検索しましたが、見つけたもののほとんどがわかりません。助けていただければ幸いです、ありがとう!

4

3 に答える 3

2

ユーザーが常にスペース/タブと改行で区切られた整数を入力し、それらが10個を超えないことが確実な場合は、この1つのライナーを使用してトリックを行うことができます:

int arr[10];
int count = 0;

while(scanf("%d",&(arr[count++])))
   ;

scanf一致したアイテムの数を返すという事実を利用しています。

于 2013-02-03T00:22:54.143 に答える
1

ユーザー入力から行を読み取り、それをトークン化し、次を使用してトークンから直接数値を取得できます sscanf

// array big enough to hold 10 numbers:
int numbers[10] = {0};

// read line from users input:
char inputString[200];
fgets(inputString, 200, stdin);

// split input string into tokens:
char *token = strtok(inputString, " ");

// retrieve a number from each token:
int i = 0;
while (token != NULL && i < 10) {
    if (sscanf(token, "%d", &numbers[i++]) != 1)
        ; // TODO: ERROR: number hasn't been retrieved
    token = strtok(NULL, " ");
}
于 2013-02-03T00:21:25.130 に答える
1

いくつかの C 関数について少し読む必要があります。

  1. fgets()を使用して行全体を読み取ります。末尾の改行を削除します。
  2. strtok()で行をトークン化します。
  3. strtol()を使用して、各文字列を整数に変換します。
  4. それらを配列に格納します。

無効な入力を気にしない場合は、sscanf()を使用して C 文字列から読み取ることができます。

于 2013-02-03T00:06:10.483 に答える