printf输出多列时的列对齐

来源:互联网 发布:香港银行开户 知乎 编辑:程序博客网 时间:2024/06/03 10:58
  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  



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

原创粉丝点击