如何解决从多个文件中以不同的整数读取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;
在第一次调用该函数时将只执行一次。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。