1

txt ファイルから数値を取得し、それらを 2 つの異なる配列に入れるプログラムを作成しています。

テキスト ファイルは次のようになります。

    50 40
    250 140
    5 6
    500 50
    300 200

最初の列のすべての数値を 1 つの配列に取得し、2 番目の列を別の配列に取得する必要があります。

これまでの私のコードは次のとおりです。

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

    int main()
    {
        FILE * ifp = fopen("input2.txt","r"); //Open the input file
        int cars = 5, i , j; // Initialized cars and counters i and j
        char VIEW[20], BID[20], CLOSE[20];
        int CAR[10], START_BID[10], MIN_INCREASE[10];
        int *b; // Temp pointer to current bid
        int  *m; // Temp pointer to current array of the minimum increase

        strcpy(VIEW, "VIEW");
        strcpy(BID, "BID");
        strcpy(CLOSE, "CLOSE");

     for (i = 0; i < cars; i++) {
         b = &START_BID[i]; // Get pointer to current START_BID
         m = &MIN_INCREASE[i]; // Get pointer to array of current MIN_INCREASE
         fscanf(ifp, "%d", &b[i]);
         for (j = 0; j < cars; j++) {
             fscanf(ifp, "%d", &m[i]);
         }
     }

        printf("%d\n", START_BID);
        printf("%d\n", MIN_INCREASE);

            fclose(ifp);

        return 0;
    }

2 つの配列の内容を出力して、それらが正しくプルされたかどうかを確認します。

これは私の出力です:

    2686588
    2686548

数値を正しい配列に引き込む方法についてのアイデアはありますか?

4

2 に答える 2

0

解決策は次のとおりです。

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

int main()
{
    FILE * ifp = fopen("file.txt","r"); //Open the input file
    int cars = 5, i , j; // Initialized cars and counters i and j
    char *view="VIEW", *bid="BID", *CLOSE="CLOSE";
    int CAR[10], START_BID[10], MIN_INCREASE[10];

    for (i = 0; i < cars; i++) 
    {
        fscanf(ifp, "%d %d", &START_BID[i],&MIN_INCREASE[i]);
    }

    for (i = 0; i < cars; i++) 
    {
        printf("%d %d\n", START_BID[i], MIN_INCREASE[i]);
    }
    fclose(ifp);
    return 0;
}
于 2013-04-05T22:21:58.053 に答える
0

あなたの質問から、データを読み取るには、最初のループを次のように変更する必要があります

 for (i = 0; i < cars; i++) {
     fscanf(ifp, "%d", &START_BID[i]);
     fscanf(ifp, "%d", &MIN_INCREASE[i]);
 }

データを個別の配列として出力する

printf("\nStarting Bids:\t");
for (i = 0; i < cars; i++) {
    printf("%d\t", START_BID[i]);
}

printf("\nMinimum Increase:\t");
for (i = 0; i < cars; i++) {
  printf("%d\t", MIN_INCREASE[i]);
}

printf("\n");

これにより、出力コンソールは次のようになります

Starting Bids:  50      250     5       500     300
Minimum Increase:       40      140     6       50      200
于 2013-04-05T22:26:15.177 に答える