打印日志时如果相关域对齐,非常有利于阅读。本文主要对文件名和行号__FILENAME__ __LINE__ 的对齐做个演示。
关键点
- 从文件路径名里找出最后的文件名,用到的函数
char *name = strrchr(filename, '/');
注意返回的指针是否为NULL,另外取文件名从name+1开始,跳过路径符 /
- 注意printf的对齐,%d 和 %s都可以对齐,添加数字代表占用的长度,-号表示左对齐,右边不空格。
例如:
printf("%5d\n",1000);//默认右对齐,左边补空格
printf("%-5d\n",1000);//左对齐,右边补空格
示例代码
#include <stdio.h>
#include <string.h>
//
void FormatLog(char* result, const char *module, const char *filename, int lineNum){
char *name = strrchr(filename, '\\');
if(name){
sprintf(result, "%s %20s:%-5d\t", module, name + 1, lineNum); // align
}else{
sprintf(result, "%s %20s:%-5d\t", module, filename, lineNum); // align
}
}
int ma