diff --git a/src/sudoku.c b/src/sudoku.c index dd18a78..f83cce2 100644 --- a/src/sudoku.c +++ b/src/sudoku.c @@ -70,3 +70,37 @@ bool parse_line_str(struct sudoku *grid, const char *input) { return true; } + +bool print_grid(const struct sudoku *grid, FILE *output) { + if (!output || !grid) + return false; + + for (size_t i = 0; i < 9; ++i) { + const int *line = grid->grid[i]; + + if (fprintf(output, INPUT_PATTERN, line[0], line[1], line[2], line[3], + line[4], line[5], line[6], line[7], line[8]) + < 18) + return false; + } + + return true; +} + +bool print_line(const struct sudoku *grid, FILE *output) { + if (!output || !grid) + return false; + + for (size_t i = 0; i < 9; ++i) { + for (size_t j = 0; j < 9; ++j) { + if (fputc(grid->grid[i][j] ? '0' + grid->grid[i][j] : '.', output) + == EOF) + return false; + } + } + + if (fputc('\n', output) == EOF) + return false; + + return true; +} diff --git a/src/sudoku.h b/src/sudoku.h index 33c81f9..ca56b0c 100644 --- a/src/sudoku.h +++ b/src/sudoku.h @@ -13,4 +13,7 @@ bool parse_grid_str(struct sudoku *grid, const char *input); bool parse_line_file(struct sudoku *grid, FILE *input); bool parse_line_str(struct sudoku *grid, const char *input); +bool print_grid(const struct sudoku *grid, FILE *output); +bool print_line(const struct sudoku *grid, FILE *output); + #endif /* !SUDOKU_H */