从多个文件中以不同的整数读取1dim数组时,如何跟踪“ i”的最后位置?

问题描述

我想从不同的文件中将多个整数读取到一维数组中,但是如何跟踪“ i”停止在哪个位置,以便可以从“ i”停止的位置继续保存?不允许一次打开多个文件,这让我很烦。 我已经阅读了每个文件的行和列大小,并保存了它。

len = rows * cols;
for(int i=0;i<len;i++) {
        fscanf(fp,"%d",&array[i]);
}

是我必须使用的for循环,还是其他循环会更好?也许可以使用指针来跟踪循环停止的位置,诸如此类?

int i = 0;
    char c;
    do{
        fscanf(fp,&array[i]);
        i++;
        *cnt = i;
    }while((c=fgetc(fp)) != EOF);

但是当我第二次调用函数时,如何将“ i”设置为cnt?

解决方法

我理解您的问题是:您从多个文件中读取数字并将其放入一个数组中,并且您需要知道该数组中所有文件都会发生写入的正确索引。

您不需要使用指针来执行此操作,从某种意义上说,此处不需要使用指针(尽管可以通过使用指针来解决此问题)。有几种方法可以实现您想要的:

1:

您可以使用全局变量作为数组中的索引。

unsigned int index = 0

int main() {
    read_from_file_and_save(filename);
}

void read_from_file_and_save() {
    char c;
    do{
        fscanf(fp,"%d",&array[index]);
        index++;
    }while((c=fgetc(fp)) != EOF);
}

2:

或者,您可以使用静态变量。静态变量在程序的整个生命周期中仅初始化一次,因此您可以编写:

void read_and_save() { 
   static unsigned int i = 0;
   char c;
   do{
       fscanf(fp,&array[i]);
       i++;
   }while((c=fgetc(fp)) != EOF);
}

保证该行:

static unsigned int i = 0;

在第一次调用该函数时将只执行一次。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...