感谢您的答案,但在此之前,我的代码可以从文件中读取并打印出该区域中的值!我的问题是如何在“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]);
}
答案 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
操作是否成功提取所有数据!