printf多列对齐(格式化输出的高级应用)

printf多列对齐(格式化输出的高级应用)

1字符串对齐

1.1列左对齐

printf("%-*s", 20, string); 表示输出字符串左对齐输出20,如果字符串不够20个,以空格补齐。 -表示左对齐。

例:

struct help_struct
{
char *option_name;
char *option_value;
char *option_ext;
};
struct help_struct options[] =
{
{"set_node_id", "node_id", "set the node id"},
{"set_debug_level", "debug_level", "4:DEBUG 3:INFO 2:WARNING 1:ERR 0:NESS"},
{"flush_pool", "pool_name", ""},
{"get_lu_count", "", ""},
{"check_pools", "pool_name", ""},
{"invalid_pool", "pool_name", ""},
{"set_mirror", "mirror_state", "0:disable 1:enable"},
{(char*)NULL,  (char*)NULL, (char*)NULL}
};


static void show_usage(const char *execname)
{ 
struct help_struct *opt = NULL;
printf("Usage: %s [options] ...\n", execname);
printf("Options:\n");
for(opt = options; opt->option_name; opt++)
{
printf("  --");
printf("%-*s",25, opt->option_name);
printf("%-*s",20, opt->option_value);
printf("%-*s",50, opt->option_ext);
printf("\n");
}
}

show_usage输出结果为:
Usage: ./vicm_test [options] …
Options:
–set_node_id node_id set the node id
–set_debug_level debug_level 4:DEBUG 3:INFO 2:WARNING 1:ERR 0:NESS
–flush_pool pool_name
–get_lu_count
–check_pools pool_name
–invalid_pool pool_name
–set_mirror mirror_state 0:disable 1:enable

1.2. 右对齐

printf("%*s", 20, string); 表示输出字符串右对齐输出20,如果字符串不够20个,以空格补齐。 没有-表示右对齐。

例:

static void show_usage(const char *execname)
{ 
struct help_struct *opt = NULL;
printf("Usage: %s [options] ...\n", execname);
printf("Options:\n");
for(opt = options; opt->option_name; opt++)
{
printf("  --");
printf("%*s",25, opt->option_name);
printf("%*s",20, opt->option_value);
printf("%*s",50, opt->option_ext);
printf("\n");
}
}

show_usage输出结果为:
Usage: ./vicm_test [options] …
Options:

– set_node_id node_id set the node id
– set_debug_level debug_level 4:DEBUG 3:INFO 2:WARNING 1:ERR 0:NESS
– flush_pool pool_name
– get_lu_count
– check_pools pool_name
– invalid_pool pool_name
– set_mirror mirror_state 0:disable 1:enable

2数字对齐

右对齐%numd(num是位数,比如按5位数的长度输出,num为正数则右对齐)

#include <stdio.h>

int main()
{

  printf("第%3d个数:%5d\n", 1, 2);
  printf("第%3d个数:%5d\n", 10, 20);
  printf("第%3d个数:%5d\n", 100, 200);

  return 0;
}

在这里插入图片描述

左对齐%numd(num是位数,比如按5位数的长度输出,num为负数则左对齐)

#include <stdio.h>

int main()
{

  printf("第%-3d个数:%-5d\n", 1, 2);
  printf("第%-3d个数:%-5d\n", 10, 20);
  printf("第%-3d个数:%-5d\n", 100, 200);

  return 0;
}

在这里插入图片描述

保留固定的小数位%m.nf(m是结果总位数,n是小数部分位数,按四舍五入保留)

#include <stdio.h>

int main()
{

  printf("第%4.1f个数:%.1f\n", 1.12345, 2.12345);
  printf("第%4.2f个数:%.2f\n", 10.12345, 20.12345);
  printf("第%4.3f个数:%.3f\n", 100.12345, 200.12345);

  return 0;
}

在这里插入图片描述

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
printf函数用于格式化输出,可以根据指定的格式将变量的值打印到屏幕上。 引用中的例子展示了如何使用printf函数来格式化输出一个整数。通过使用"%d"、"%o"和"%x"等格式指示符,可以将整数以十进制、八进制或十六进制形式打印出来。 引用中的例子展示了如何使用"%o"格式指示符来以八进制形式输出一个整数。在例子中,将-1转换为八进制数时,得到了177777。 引用中的例子展示了如何使用printf函数来格式化输出浮点数。通过使用"%f"格式指示符,可以将浮点数打印到屏幕上。 总结起来,printf函数可以通过不同的格式指示符来格式化输出不同类型的变量,包括整数和浮点数。这样可以使输出更加灵活和易读。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C语言输入输出(左端对齐,右端对齐对齐补零……)](https://blog.csdn.net/m0_64782700/article/details/123153448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [printf格式化输出](https://blog.csdn.net/sinat_22991367/article/details/78997945)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值