1

x 量の double を含むファイルを 2 つの別々の配列にスキャンしようとしています。この配列では、double が次々と交互にスキャンされます。すべてがうまく機能していますが、両方の配列の余分な要素に 0 をスキャンし続けます (ファイルの double のリストの一部ではありません)。

両方の配列に 37 個の double 要素が含まれる十分な数の double をスキャンする場合、私のコードでは 38 個の要素があり、両方の配列の最後の要素がゼロになります。

ARR_SIZE は 1500 です

Size read_array(double array1[], double array2[])
{
    Size size = {0, 0};

    int i = 0;

    int status1 = 0;
    int status2 = 0;

    status1 = scanf("%lf", &array1[i]);
    size.sigSize1++;

    status2 = scanf("%lf", &array2[i]);
    size.sigSize2++;

    while(size.sigSize1 < ARR_SIZE && size.sigSize2 < ARR_SIZE && 
         (status1 != EOF || status2 != EOF))
    {
        i++;

        status1 = scanf("%lf", &array1[i]);
        size.sigSize1++;


        status2 = scanf("%lf", &array2[i]);
        size.sigSize2++;


    }

    return size;
}
4

2 に答える 2

0

サイズのインクリメントが早すぎます。次のよう++に、のチェックで をガードする必要があります。statusX != EOF

status1 = scanf("%lf", &array1[i]);
if (status1 != EOF) {
    size.sigSize1++;
}

status2 = scanf("%lf", &array2[i]);
if (status2 != EOF) {
    size.sigSize2++;
}
于 2013-10-16T00:50:18.360 に答える