如何保存文件内容

时间:2012-09-25 11:34:11

标签: c file-io

感谢您的答案,但在此之前,我的代码可以从文件中读取并打印出该区域中的值!我的问题是如何在“FOR LOOP”之外使用这些值。由于我不想在任何时候需要值继续读取文件,假设数组数据[] []包含文件的所有内容.......是否有可能在循环及其打印之外调用阵列输出所有文件内容?

//file
S (20,22)(129,37)
S (10,18)(40,200)
S (10,20)(39,15)
S (30,400)(750,200)
S (160,70)(240,20)
S (40,40)(10,39)
S (6,65)(94,2)
S (404,40)(110,39)
S (86,61)(50,19)

  //part of code.........

      int count=1;   

       for (i=0; i <= count; i++)
       {
         while(fscanf(file, "S (%d,%d)(%d,%d)\n", &a, &b, &c, &d) !=EOF)
         {

 data[i][0] =a;
 data[i][1] =b;
 data[i][2] =c;
 data[i][3] =d;

 printf("%d,%d,%d,%d\n",data[i][0], data[i][1], data[i][2], data[i][3]);
  XDrawLine(display_ptr, win, gc_grey,a, b, c, d);

    count++;
   }

 // want to call the array data[i][j] here outside the iteration above..
  int j1=0;  
       for (i=0; i <= 19, j1<=3; i++) {
        printf("%d\n",data[i][0]);

        } 

1 个答案:

答案 0 :(得分:1)

您永远不会在循环中增加i。而且,外循环什么都不做。

尝试这样的事情:

int i;

for (i = 0; fscanf(...) != EOF; ++i)
{
    // if i == current array size of data, reallocate or break

    data[i][0] = a;
    data[i][1] = b;
    data[i][2] = c;
    data[i][3] = d;

    // etc.
}

// Now data[k] holds data for k in [0, i)

当你的文件中有多行而不是数组元素时,你必须考虑会发生什么。您可以重新分配(如果数组是动态的),或者您可以将整个构造包装在另一个以块为单位处理文件的循环中。您还应该检查fscanf操作是否成功提取所有数据!