我正在尝试将包含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;
}
答案 0 :(得分:0)
您过早地增加尺寸:您应该使用++
检查保护statusX != EOF
,如下所示:
status1 = scanf("%lf", &array1[i]);
if (status1 != EOF) {
size.sigSize1++;
}
status2 = scanf("%lf", &array2[i]);
if (status2 != EOF) {
size.sigSize2++;
}
答案 1 :(得分:0)
所以scanf从键盘输入读取。我想你不想打字。
在使用fopen打开文件进行阅读后,您想使用fscanf从FILE指针读取。