我正在用C编写程序来解决迷宫游戏。输入迷宫文件将从标准输入读取。我写了下面的程序,从stdin读取迷宫并打印否。行和列。但是,一旦我完全读取输入文件,我怎样才能再次访问它,以便我可以执行后续步骤?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define BUFFERSIZE (1000)
struct maze {
char ** map;
int startx, starty;
int numrows;
int initdir;
};
void ReadMaze(char * filename, struct maze * maze);
int main(int argc, char *argv[]) {
struct maze maze;
ReadMaze(argv[1], &maze);
return EXIT_SUCCESS;
}
/* Creates a maze from a file */
void ReadMaze(char * filename, struct maze * maze) {
char buffer[BUFFERSIZE];
char mazeValue [BUFFERSIZE][BUFFERSIZE];
char ** map;
int rows = 0, foundentrance = 0, foundexit = 0;
int columns = 0;
/* Determine number of rows in maze */
while ( fgets(buffer, BUFFERSIZE, stdin) ){
++rows;
puts(buffer);
columns = strlen(buffer);
}
printf("No of rows: %d\n", rows);
printf("No of columns: %d\n", columns);
if ( !(map = malloc(rows * sizeof *map)) ) {
fputs("Couldn't allocate memory for map\n", stderr);
exit(EXIT_FAILURE);
}
}
答案 0 :(得分:5)
您在阅读时必须将其存储在缓冲区中。在您阅读stdin
后,您无法将其回放和/或重新阅读。
答案 1 :(得分:0)
如果您想再次阅读文件,可以使用rewind
。
FILE * fp;
// Open and read the file
rewind(fp);
// Read it again
fclose(fp);
但是,使用stdin
,这不起作用。您必须存储从stdin
读取的内容。