【问题标题】:How to print two values in 2 different lines one above other?如何在 2 个不同的行中打印两个值,一个在另一个之上?
【发布时间】:2025-12-03 13:20:29
【问题描述】:

我正在尝试打印一个高于另一个的两个值。 这两个值在两行中。 如何在不使用空格的情况下将它们打印在另一个之上? 我想确保 27 在同一列中高于 26。

#include<stdio.h>

void main() {
    printf("date:       27.12.2021\n");
    printf("date :       26.12.2021");
}

【问题讨论】:

  • 使用 tab(\t) 而不是手动输入空格: printf("date:\t27.12.2021\n"); printf("日期:\t26.12.2021");
  • @Ilan 有什么问题?

标签: c printf


【解决方案1】:

您可以将%s 与宽度说明符一起使用。

喜欢

#include <stdio.h>

int main() {
    printf("%-10s%30s\n", "date:", "27.12.2021");
    printf("%-10s%30s\n", "date :", "26.12.2021");
    
    return 0;
}

输出:

date:                         27.12.2021
date :                        26.12.2021

%-10s 表示:要打印的字符串将附加空格,使其宽度为 10。换句话说,字符串将在 10 个字符宽度的字段中左对齐打印。

%30s 表示:字符串将在前面添加空格,使其宽度为 30。换句话说,字符串将在 30 个字符宽度的字段中右对齐打印。

如果原始字符串的宽度已经是指定的宽度(或更大),则不会添加额外的空格。

要真正了解其工作原理,您可以在两个字段之间添加|,例如:

#include <stdio.h>

int main()
{

    printf("|%-10s|%30s|\n", "date:", "27.12.2021");
    printf("|%-10s|%30s|\n", "date :", "26.12.2021");

    return 0;
}

输出:

|date:     |                    27.12.2021|
|date :    |                    26.12.2021|

【讨论】:

    【解决方案2】:

    比如你可以写

    printf( "date: %16s\n", "27.12.2021" );
    printf( "date: %16s\n", "26.12.2021" );
    

    printf( "date: %*s\n", 16, "27.12.2021" );
    printf( "date: %*s\n", 16, "26.12.2021" );
    

    在这两种情况下,输出都是

    date:       27.12.2021
    date:       26.12.2021
    

    如果date和第二行分号之间的空格不是错别字,那么你可以写

    printf( "date: %*s\n", 16, "27.12.2021" );
    printf( "date : %*s\n", 15, "26.12.2021" );
    

    【讨论】:

      【解决方案3】:

      \t 正好给出三个空格。

      void main()
      {
          printf("date:\t27.12.2021\n");
          printf("date:\t26.12.2021");            
      }
      

      【讨论】:

        最近更新 更多