控制台表格输出需求
在研发工具时,尤其是一些服务后台管理性质的工具时,经常会遇到使用控制台进行命令行方式操作的需求,在控制台使用表格将一些结果有组织地反馈给工具使用者,是一个必要的功能,本文将给出一个用于实现控制台输出表格样式格式化的C语言代码,希望可以帮助到有此方面需求的小伙伴们。
C语言实现
table.h定义表格结构体和format_table方法实现表格样式格式化:
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
typedef struct TABLE {
unsigned int row_num;
unsigned int col_num;
unsigned int *col_max_width;
char ***content;
} table;
extern void format_table(table *t, char *formated_out);
通过table 设置表格的行数、列数以及对象行列索引的文本数据,formated_out为格式化完成的字符串。
table.c实现表格样式格式化逻辑:
#include "table.h"
#define CORNER_FLAG "+"
#define ROW_LINE "-"
#define COL_PADDING " "
#define COL_LINE "|"
/**
* 计算在控制台中输出的字符串长度
* str 字符串
**/
static int str_len(unsigned char *str){
int len = 0;
int offset = 2;
int word_len = strlen(str);
int i = 0;
for(i; i < word_len; i++){
if(str[i] < 128){
len += 1;
} else {
len += 2;
i += offset;
}
}
return len;
}
/**
* 生成表格行边
* col_width 表格的列宽
* col_num 表格列数
* edge 保存行边字符串
**/
static void make_edge(const unsigned int *col_width, const unsigned int col_num, char *edge){
memset(edge, <