我希望正确缩进以下内容,我希望DG1, DG2, DG3, DG4
应该在同一列中,是否有最佳方法?谢谢,任何指针或帮助将不胜感激。
Test DG1
DG2
DG3
DG3
sh-4.2#^ C
#include <stdio.h>
int main()
{
printf("%-64s\t%s\n", "List", "Bindings");
printf("-----------------------------------------------------------------------------\n");
const char *curr_dl_result[] = {
[0] = "DG1",
[1] = "DG2",
[2] = "DG3",
[3] = "DG3",
};
int dg_count = 4;
int j = 0;
char buff[1024];
printf("%s", "Test");
if(dg_count) {
unsigned char is_print_done = 0;
for(j = 0; j < dg_count; j++) {
printf("%78s\n", (curr_dl_result[j]));
is_print_done = 1;
}
} else {
printf("%78s\n","-" );
}
return 0;
}
答案 0 :(得分:1)
为什么不改变
printf("%s", "Test");
到
printf("%s\n", "Test");
这将正确打印并缩进DG1,DG2,DG3,DG4并在测试后打印一行如果你不介意的话。 见http://ideone.com/ZhOlhF
答案 1 :(得分:1)
也许使用printf返回打印的字符数的事实, 然后在打印最后一个字符串之前用空格填充。
#include <stdio.h>
void my_out(const char* str1, const char* str2)
{
int len = printf("%s", str1);
int i;
for( i=len ; i<60 ; i++ )
{
printf(" ");
}
printf("%s\n", str2);
}
int main()
{
my_out("List", "Bindings");
printf("-----------------------------------------------------------------------------\n");
const char *curr_dl_result[] = {
[0] = "DG1",
[1] = "DG2",
[2] = "DG3",
[3] = "DG3",
};
my_out("Test",curr_dl_result[1]);
my_out("Test eee",curr_dl_result[2]);
my_out("Test 22",curr_dl_result[3]);
return 0;
}
这将打印:
List Bindings
-----------------------------------------------------------------------------
Test DG2
Test eee DG3
Test 22 DG3
答案 2 :(得分:0)
E.g。用printf
替换for
内的if
应该可以解决问题:
if (j == 0)
printf("%74s\n", (curr_dl_result[j])); // account for "Test" (4 chars) on same line
else
printf("%78s\n", (curr_dl_result[j]));
答案 3 :(得分:0)
一些动态分配怎么样(仍然有一些硬编码的东西,但更通用):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
printf("%-64s\t%s\n", "List", "Bindings");
printf("-------------------------------------------------------------------------------\n");
const char *curr_dl_result[] = {
[0] = "DG1",
[1] = "DG2",
[2] = "DG3",
[3] = "DG3",
};
int dg_count = 4;
int j = 0;
int pos = printf("%s", "Test");
if(dg_count) {
unsigned char is_print_done = 0;
for(j = 0; j < dg_count; j++) {
char *spacer = malloc(74-pos*sizeof(char));
memset(spacer, ' ', 74-pos);
printf("%s", spacer);
printf("%s\n", (curr_dl_result[j]));
is_print_done = 1;
pos = 0;
free(spacer);
}
}
else {
printf("%78s\n","-" );
}
return 0;
}