如何扫描TXT文件并输入矩阵C

How to scan a txt file and input into matrix c++

本文关键字:输入 文件 TXT 何扫描 扫描      更新时间:2023-10-16

我必须扫描一个代表" 6 6 2 3 5 5 1"的文件(r,c,c,x,y,a,b,o),其中r和c是尺寸Matrix(X,Y)的位置是球员的位置,(A,B)是目标的位置,O是障碍的数量。如何从TXT文件扫描此信息?我是C 的新手,我知道如何在Java中执行此操作,因此我基本上试图将其转换为C

这是我到目前为止所拥有的:

Board(int r, int c, int x, int y, int a, int b, int o) {
rows = r;
cols = c;
player_x = x;
player_y = y;
goal_x = a;
goal_y = b;
obstacles = o;
}
read_board (board *b, r, c, x, y, a, b, o){
scanf("%d %d", &(b->rows),  &(b->cols), &(b->player_x), &(b->player_y), &(b->goal_x), &(b->goal_y), &(b->obstacles)
}

您已经完全省略了参数类型和函数的返回值。您需要参考。您还忘记了scanf格式参数中的一些%d指数。

void read_board(board *b, int &r, int &c, int &x, int &y, int &a, int &b, int &o)
{
    scanf("%d %d %d %d %d %d %d", &b->rows, &b->cols, &b->player_x, &b->player_y, &b->goal_x, &b->goal_y, &b->obstacles);
}

好吧,这仍然是垃圾,无处可去,文件在哪里?
由于您使用的是C read_board也应该是Board的成员函数,不使用参数,仅在成员变量上操作。
由于您使用的是C ,请留下printfscanf和其他过时功能,用于C 并使用流:

bool Board::read_board()
{
    std::ifstream ifs("file.txt");
    return ifs >> rows >> cols >> player_x >> player_y >> goal_x >> goal_y >> obstacles;
}

是否成功读取文件将返回该函数。我希望您能从中弄清楚一些东西。如果您不知道要包含什么文件以使用std::ifstream,请使用Google IT。如果您不知道operator>>operator boolstd::ifstream做什么,为什么在if条件下它,请使用Google IT。另外,使用initializer list而不是构造函数中的分配。

由于您提到了scanf,这是一个(非常丑陋的)C替代方案:

FILE *fp = NULL;
if ((fp = fopen("your file name", "r")) != NULL) {
    fscanf(fp, "%d %d %d %d %d %d %d", &(b->rows),  &(b->cols), &(b->player_x), &(b->player_y), &(b->goal_x), &(b->goal_y), &(b->obstacles));
    fclose(fp);
}