gpt4 book ai didi

c++ - 在重复循环时跳过文本文件行

转载 作者:行者123 更新时间:2023-11-30 03:45:02 25 4
gpt4 key购买 nike

我有一个循环,它成功地将一个文本文件的前 9 行读入一个数组并适本地使用它。在每次额外的传递中,我想跳过文本文件的 9 行并从那里覆盖数组。 (每段9行,信息类型相同)

问题是我似乎无法跳过它。我有一个变量,每次通过时递增 9,最多 9 个部分,它本身来自通过测量文本文件的行生成的变量。

我认为最简单的方法是将此循环中的变量增加我想跳过的行的当前值,但这要么没有做任何事情,要么使程序崩溃,要么使输出困惑,具体取决于如何我走近了它。

这是当前将信息从文本文件传递到二维数组(并删除空格)的文本区域

for (int x = (0); x < BOARD_SIZE + 1; ++x)
{
for (int y = 0; y < BOARD_SIZE; ++y)
{
// Initializing as Z because that's not a possible input from file.
// If it appears something is wrong.
char point = 'Z';

if (!file.get(point))
cout << "There seems to be a problem with the file." << x << "," << y << endl;

if (isblank(point))
{
// Without this, it will spit out spaces every other character of the array
--y;
}
else
{
chessBoards[x][y] = point;
}
}
}

正如现在所写的那样,该程序可以运行,并生成与文件中的表数相等的表数,但每次通过都会将第一个表的精确拷贝打印到屏幕上。

最佳答案

您可以使用fgetpos 来保存文件中前9 行结束的位置。

然后,在下一个循环中,您可以使用fsetpos 来检索文本文件的位置。

这是你如何做的:

  • 首先声明变量来存储你的位置。使用的类型是fpos_t
  • 然后在循环到达第9行末尾的地方,使用getpos保存文件的位置。
  • 您可以使用 fsetpos 检索位置并从上一个循环停止的地方继续

    fpos_t 位置;

    fgetpos(fp, &pos);//保存位置

    fsetpos(fp, &pos);//现在将位置恢复到我们保存的位置

关于c++ - 在重复循环时跳过文本文件行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35079054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com