【发布时间】:2014-07-20 03:33:45
【问题描述】:
我浏览了该站点以找到一种方法来获取包含数据的数组的元素数量。我只能找到使用 sizeof 的人,但这对我来说不是一个选择,因为老师对我们可以访问的内容有限制。我需要一种在循环中执行此操作的方法,最好是我从中读取数据的同一循环。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
int readData();
int
main(void)
{
double data[SIZE];
int size;
readData(double data[], &size);
return 0;
}
int readData(double data[], int* size)
{
FILE* fp;
fp = fopen("data.txt", "r");
int i;
for (i = 0; i < SIZE; i++)
{
if( fscanf(fp, "%lf", &data[i]) < 1)
break;
if(data[i] < 0)
printf("Negative data at %d\n", i);
}
size = i;
printf("The array is: ");
for (i = 0; i < size; i++)
{
printf("%f ", data[i]);
}
fclose(fp);
printf("\n\n");
return;
}
【问题讨论】:
-
你知道数组的大小,它是
size。 -
数组正在从一个可以包含 1-SIZE 的文件中读取,因此我需要能够使程序适应该范围内的任何内容。
-
你需要检查
fscanf是成功还是失败。然后你需要returni在失败时的状态。 (所以你的函数返回int而不是void) -
将大小存储在变量中并使用它
-
您需要重新表述问题。数组的大小与你存储在数组中的元素个数不同。
标签: c arrays loops iteration elements