c - 将多个文件中的不同整数读入 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, "%d", &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, "%d", &array[i]);
i++;
}while((c=fgetc(fp)) != EOF);
}
保证该行:
static unsigned int i = 0;
将只执行一次,在第一次调用该函数时。
推荐阅读
- android - Android Studio Equivalate to CSS display grid
- python - 关于在 Python 中的某些线程之间共享变量
- html - 在角度 7 上折叠响应式导航栏
- java - Android - 改造 - 如何发送具有多个值的字符串列表
- css - 更改搜索栏中的背景颜色
- php - 用 php 启动 selenium webdriver
- flash - 在 Flash CS6 中编辑具有嵌入字体的 SWF 文件
- python - 如何获得字符保持相同顺序的部分编码字符串的所有可能组合?
- javascript - 在 TypeScript 中实现装饰器模式
- cookies - Graphql Apollo 设置 cookie 不起作用