【问题标题】:How can I pass integers read from Text file into struct function?如何将从文本文件中读取的整数传递给结构函数?
【发布时间】: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", &amp;value)&amp;&amp; !feof(fp) &amp;&amp; ++i &lt;100000)while (fscanf (fp, "%u", &amp;value) == 1 &amp;&amp; i + 1 &lt;100000) 更好,然后在integers[i++] = value; 中增加,还要初始化int i = 0; 你是不是故意跳过for(i=1;i&lt;numPoints;i++) 中的第一个点?

标签: c function file struct


【解决方案1】:

smallest_xCoord(整数, num_ints);

首先,您不能将整数数据类型传递给“Point”数据类型参数。 其次,您不能将数组整数数据类型传递给单个 Point 参数。

struct Point minimum_xCoord (struct Point points, int numPoints) { 结构点点[];

第三,您不能在 x_Coord 内部创建一个与其参数名称相似的新变量,因为您要重新声明它。

如果要将数组作为参数传递,则必须在其名称前使用指针 (*)。要使 minimum_xCoord 函数起作用,您需要指定要比较或分配给 Point 结构的哪个成员。我对您的建议是,您可能需要将该全局 int 数组变量更改为全局 Point 数组变量,并使用我假设的文件中的值加载它,该值应包含 x 和 y 坐标的值,以便您可以比较加载的全局将数组指向您提供的那个。然后,将 minimum_xCoord 的参数更改为“struct Point *points”或“struct Point points[]”,因为您正在传递要比较的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2017-02-25
    • 2012-05-09
    相关资源
    最近更新 更多