所以我有一个长度为10的字符串。我想打印4-6 [包括两者]的字母,我希望跨越特定长度L的输出,数字位于右侧
例如
如果我有原始字符串123456789
,则以下代码应以后续方式显示。
printf(Original);
printf(from 4-6, over 5 spaces)
输出:
123456789
456
这是456分布在5个空格并向右缩进。
我如何在C中完成?
编辑1:如果我的宽度不恒定怎么办,并且我有一个变量,它决定了宽度。类似地,子串的长度是变量。现在有办法吗?
我可以做点什么吗
printf("%%d.%ds",width,precision,expression);
答案 0 :(得分:7)
非常直接:
printf("%5.3s\n", Original + 4);
^ ^
| |
| +--- precision, causes only 3 characters to be printed
|
+----- field width, sets total width of printed item
由于右侧调整是默认值,因此您可以获得所需的输出。
精度“节省”我们不必将三个字符提取到一个正确终止的字符串中,非常方便。
您可以通过将宽度指定为*
并传递int
参数来为精度或字段宽度(或两者都使用)使用动态值:
const int width = 5, precision = 3;
printf("%*.*s\n", width, precision, Original + 4);
答案 1 :(得分:5)
#include <stdio.h>
int main(void)
{
char *original = "123456789";
printf("%5.3s\n", original + 3);
return 0;
}
编辑:
如果你想要一个基于变量的精度:
int prec = 2;
printf("%5.*s\n", prec, original + 3);
...宽度相同