自定义填充空格函数

来源:互联网 发布:mac 板绘 编辑:程序博客网 时间:2024/05/06 08:22

在一些输出的时候,由于某些输出的结果不定长,导致最后的输出的结果每一行不能对齐,用空格填充又不确定填充多少空格

为了解决这个小问题,自编写如下小函数

原理:每段输出的结果无论多长应该有理论的最大长度,最大长度减去实际输出长度,就是应该填充的空格数

void fillspace(char* src,char* dest,int max) {

int i = 0;
int space_count = 0;
int src_len = 0;
unsigned char space = ' ';
char space_str[max];
src_len = strlen(src);
space_count = max - src_len;
memset(space_str,0,sizeof(space_str));
if (space_count == 0) {
memcpy(dest,src,(strlen(src) + 1));
}
else {
for (i = 0;i < space_count;i++) {
memcpy((void*)&space_str[i],(const void*)&space,1);
}
space_str[i] = '\0';
sprintf(dest,"%s%s",src,space_str);
}

}
int main() {
char str[20] = {0};
fillspace("1234",str,15);
printf("str = !%s!  len = %d\n",str,strlen(str));
//结果:str = !1234          !len = 15
return 0;
}


不使用传入传出参数,在函数内定义静态字符数组,使用返回值的另一种方式

char* fillspace(char* src,int max) {
int i = 0;

int space_count = 0;
int src_len = 0;
unsigned char space = ' ';
char space_str[max];
static char dest[256] = {0};
src_len = strlen(src);
space_count = max - src_len;
memset(space_str,0,sizeof(space_str));
if (space_count == 0) {
memcpy(dest,src,(strlen(src) + 1));
return dest;
}
else {
for (i = 0;i < space_count;i++) {
memcpy((void*)&space_str[i],(const void*)&space,1);
}
space_str[i] = '\0';

sprintf(dest,"%s%s",src,space_str);
return dest;
}

}
int main() {

char*str = NULL;
str = fillspace("1234",15);

printf("str = !%s! len = %d\n",str,strlen(str));
//结果:str = !1234          !len = 15
return 0;
}

如有错误,敬请指点



0 0