【问题标题】:How to format fraction output in terminal with printf如何使用 printf 在终端中格式化分数输出
【发布时间】:2021-08-16 22:09:35
【问题描述】:

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

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

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

【问题讨论】:

  • 制作一个代表屏幕输出的二维字符数组,在其中格式化您的输出(这更容易,因为您可以按任何顺序访问任何单元格),然后将数组打印出来。
  • 您所显示的也不是一行的分数。它是在 3 条单独的线上描绘的分数。只要您可以在相同的 3 行上以相同的方式显示多个分数,这种描述是否可以接受?
  • 是的,我没问题

标签: c terminal format output printf


【解决方案1】:

丑陋,但是如果您在帖子中显示的 3 行上的一个分数的示例是可以的,那么这说明了同一 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,但随后您将需要使用wchar,并且仍然仅限于查看粗俗分数形式:1/2

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      相关资源
      最近更新 更多