【问题标题】:Scanning into an Array扫描成阵列
【发布时间】:2013-10-16 00:43:49
【问题描述】:

我正在尝试将包含 x 数量的双精度数的文件扫描到两个单独的数组中,其中双精度数被扫描到哪个数组一个接一个地交替。一切都运行良好,但我一直在 0 中扫描我的两个数组中的一个额外元素(不是我文件中双精度列表的一部分)。

如果我要扫描足够多的双精度数,使得两个数组都有 37 个双精度数元素,我的代码会生成 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;
}

【问题讨论】:

    标签: c arrays scanf eof


    【解决方案1】:

    你过早地增加尺寸:你应该用statusX != EOF的检查来保护++,像这样:

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

    【讨论】:

      【解决方案2】:

      所以 scanf 从键盘输入读取。我想你不想打字。

      在使用 fopen 打开文件进行读取之后,您想使用 fscanf 从 FILE 指针中读取。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        相关资源
        最近更新 更多