【发布时间】:2020-05-24 16:43:17
【问题描述】:
我想将一个整数的 txt 文件传递到 minimum_xcoord 结构中。我正在尝试获得凸包。我的问题是,我在尝试时不断收到错误消息。如何将从文本文件中读取的整数传递给我的结构函数?我没有包含我的结构点,但它存储了一个 int x;和int y; (对于凸包点)。
```
//GLOBAL Variable
static int integers[100000];
int load_integers(const char* filename)
{
//int integers[100000];
FILE *fp = NULL;
int value;
int i = -1;
if ((fp= fopen (filename, "r"))==NULL)
{
return -1;
}
while (fscanf (fp, "%u", &value)&& !feof(fp) && ++i <100000)
{
integers[i] = value;
}
fclose(fp);
return i+1;
}
struct Point smallest_xCoord (struct Point points, int numPoints)
{
struct Point points[];
struct Point minX_point = points[0];
int i;
for(i=1;i<numPoints;i++)
{
if ((points[i].x) < (minX_point.x))
{
minX_point = points[i];
}
else if (points[i].x == minX_point.x)
{
if (points[i].y < minX_point.y)
{
minX_point=points[i];
}
}
}
return minX_point;
}
int main(int argc, char *argv[])
{
int num_ints=0;
if (argc <2)
{
fprintf(stderr, "%s <file>\n",argv[0]);
return -1;
}
if ((num_ints = load_integers(argv[1])) <=0)
{
fprintf(stderr, "Error reading from file: %s\n",argv[1]);
return -1;
}
smallest_xCoord(integers, num_ints);
return 0;
}
```
【问题讨论】:
-
while (fscanf (fp, "%u", &value)&& !feof(fp) && ++i <100000)比while (fscanf (fp, "%u", &value) == 1 && i + 1 <100000)更好,然后在integers[i++] = value;中增加,还要初始化int i = 0;你是不是故意跳过for(i=1;i<numPoints;i++)中的第一个点?