C 生成可变长度的空白字符数组
我正在用C编写一个代码,它应该使用printf将乘法表打印到屏幕上,在乘法表的右下角,表的最大乘积作为MaxMult传递给函数 例如,对于MaxMult=4,它应该打印:C 生成可变长度的空白字符数组,c,printf,space,C,Printf,Space,我正在用C编写一个代码,它应该使用printf将乘法表打印到屏幕上,在乘法表的右下角,表的最大乘积作为MaxMult传递给函数 例如,对于MaxMult=4,它应该打印: 1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16 要求桌子向右对齐,这是我的问题: 对于每个数字,其左侧空白的数量是不同的。 因为我需要它来满足MaxMult左边只有一个空格的要求,所以其他所有的东西都和它有关 起初我想也许我可以把一个变量传递给printf。大概是
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
要求桌子向右对齐,这是我的问题:
对于每个数字,其左侧空白的数量是不同的。
因为我需要它来满足MaxMult左边只有一个空格的要求,所以其他所有的东西都和它有关
起初我想也许我可以把一个变量传递给printf。大概是这样的:
printf("% Num_Of_Wite_Space d", currNum)
但我似乎无法做到这一点
所以现在我需要一种方法来生成一个空格字符串,根据每个数字的位数不同长度不同,以便将其传递给printf。
希望我足够清楚
有人能告诉我怎么做吗?最简单的方法是对每个值使用固定的字段宽度,例如
printf("%3d", a[i][j]);
这将导致每个输出值在必要时用前导空格填充,以提供3的字段宽度,例如
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
显然,如果需要打印两位数以上的值,则应相应增加字段宽度
如果需要在运行时确定而不是在编译时固定的字段宽度,可以使用:
printf("%*d", field_width, a[i][j]);
有关更多详细信息,请参阅。最简单的方法是对每个值使用固定的字段宽度,例如
printf("%3d", a[i][j]);
这将导致每个输出值在必要时用前导空格填充,以提供3的字段宽度,例如
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
显然,如果需要打印两位数以上的值,则应相应增加字段宽度
如果需要在运行时确定而不是在编译时固定的字段宽度,可以使用:
printf("%*d", field_width, a[i][j]);
有关更多详细信息,请参阅
大概是这样的:
printf("% Num_Of_Wite_Space d", currNum)
printf%Num\u,其中有空格d,currNum
但我似乎无法做到这一点
你当然可以这样做。语法是:
printf("%*d", fieldWidth, currNum);
请注意,fieldWidth是空格的总宽度+数字
大概是这样的:
printf("% Num_Of_Wite_Space d", currNum)
printf%Num\u,其中有空格d,currNum
但我似乎无法做到这一点
你当然可以这样做。语法是:
printf("%*d", fieldWidth, currNum);
请注意,fieldWidth是空格+数字的总宽度。这并不难:
int width = 10; //< number of chars in one column
printf("%*d", width, a[i][j]);
您可以将列宽设置为固定,或使用数组中的一些计算值:
int width[COLS];
int a[ROWS][COLS];
int row, col;
... // fill in a and width
for (row = 0; row < ROWS; ++row)
{
for (col = 0; col < COLS; ++col)
{
printf("%*d", width[col], a[row][col]);
}
printf("\n");
}
这并不太难:
int width = 10; //< number of chars in one column
printf("%*d", width, a[i][j]);
您可以将列宽设置为固定,或使用数组中的一些计算值:
int width[COLS];
int a[ROWS][COLS];
int row, col;
... // fill in a and width
for (row = 0; row < ROWS; ++row)
{
for (col = 0; col < COLS; ++col)
{
printf("%*d", width[col], a[row][col]);
}
printf("\n");
}
这不适用于右下角的最终值大于2位的情况。@unwind:true-这只是这个特定情况的一个示例-我现在更新了答案,以涵盖不同的字段宽度以及在运行时而不是编译时指定的字段宽度。这不适用于最终值为右下角的值大于2位。@unwind:true-这只是这个特殊情况的一个示例-我现在更新了答案,以涵盖不同的字段宽度以及在运行时而不是编译时指定的字段宽度。