如何使用 printf 在终端中格式化分数输出

How to format fraction output in terminal with printf

这可能真的很愚蠢,但我一直无法在我的终端上打印分数。如何让我的分数看起来像这样 而不是 (2/3).

我试过下面的代码,但我不知道如何在同一行上打印多个分数。

printf("2\n");
printf("-\n");
printf("3\n");

在 ASCII 文本模式下,如果这些分数是您使用的字符集中的硬编码字符,则只能在一行中打印分数。

ASCII字符集的低128个字符不包含任何此类字符。根据您使用的字符集,上面的 128 可能包含一些这样的字符,例如 ¼½¾。但您不太可能找到所需的所有字符。

Unicode 可能会支持更多此类字符,但由于您可能正在寻找更通用和更灵活的解决方案,您将无法使用文本终端,而必须制作一个使用 LaTeX渲染器或类似的东西。

丑陋,但如果一个分数在 3 行上的示例(如您在 post 中所示的那样)没问题,那么这说明了在相同的 3 行上有多个分数。注意格式字符串中宽度说明符的使用:

int main(int argc, char *argv[])
{
    const char array[3][5] = {{'1','2','3','4','5' },
                              {'-','-','-','-','-'},
                              {'2','3','4','5','6' }};
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<5;j++)
        {
            printf("%6c", array[i][j]);
            //       | width specifier, change value as needed for formatting.
        }
        printf("\n");
    }
    return 0;
}

输出:

为了获得更漂亮的输出,您始终可以使用 unicode characters, but then you would need to use wchar,但仍然只能看到粗俗分数形式:1/2.