如何扫描TXT文件并输入矩阵C
How to scan a txt file and input into matrix c++
我必须扫描一个代表" 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 ,请留下printf
,scanf
和其他过时功能,用于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 bool
为std::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);
}
相关文章:
- 用c++从输入文件中读取另一行
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 获取通过重定向传入的输入文件的名称?
- C++ 如何打开带有另一个目录的输入文件?
- C++模板编程设计问题 - 根据输入文件返回不同的类型
- 如何从输入文件 c++ 创建随机名称生成器
- 从输入文件修剪空格
- 链接器输入文件未使用,因为链接未完成,我无法获得.o
- 我正在尝试从输入文件中读取,然后使用它们的子字符串比较字符串的特定部分
- 我遇到使用 c++ 逐行读取输入文件的问题
- 使用重定向命令从 stdin 读入的字符串"<"输入文件未正确附加
- 使用 getline 从输入文件打印时如何忽略空白行
- 如何按升序对输入文件中的数字进行排序,并找到它们的范围和中值
- 数组大小由输入文件中的行数定义
- 从C++输入文件读取
- 在课堂上创建了一个朋友,给出"无输入文件"错误
- 通过显示一行星号来创建条形图,该条形图将读取数据的输入文件
- 利用输入文件中的数据(字符串和int)并在循环中利用
- C++ 仅读取输入文件中的部分(不是全部)数据以添加到记录中
- 如何从输入文件中读取字符并将其存储到向量中?