From d8da3f4fb0b3d5e7ea6f4c65b16b81166c34ca19 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 7 Jun 2021 16:06:45 +0200 Subject: [PATCH] Center numbers --- main.c | 18 +++++++++++++++++- main.h | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index d209b14..f2b4642 100644 --- a/main.c +++ b/main.c @@ -399,6 +399,22 @@ void merge_west(board *b) { } } +void center_print(uint n, int width) +{ + char s[20] = {'\0'}; + int len; + sprintf(s, "%u", n); + len = strlen(s); + if (len >= width) { + printf("%s", s); + } else { + int remaining = width - len; + int spaces_right = remaining / 2; + int spaces_left = remaining - spaces_right; + printf("%*s%s%*s", spaces_left, "", s, spaces_right, ""); + } +} + void print_sep(const char *left, const char *right, const char *cross, const char *line) { printf("%s", left); @@ -422,7 +438,7 @@ void print_board_line(board *b, int l) { if(n == 0) printf(" "); else - printf("%6u", n); + center_print(n, 6); if(i == 3) printf("\u2503"); diff --git a/main.h b/main.h index 9068990..24020d6 100644 --- a/main.h +++ b/main.h @@ -8,6 +8,7 @@ #include #include #include +#include typedef struct board board; typedef unsigned int uint;