用C语言打印格式化字符串
所以我有一个长度为10的字符串。我想打印4-6的字母(包括两者),我想把输出跨越一个特定的长度L,数字放在右边 例如 如果我有原始字符串用C语言打印格式化字符串,c,formatting,printf,C,Formatting,Printf,所以我有一个长度为10的字符串。我想打印4-6的字母(包括两者),我想把输出跨越一个特定的长度L,数字放在右边 例如 如果我有原始字符串123456789,则以下代码应以后续方式显示 printf(Original); printf(from 4-6, over 5 spaces) 输出: 123456789 456 也就是说456分布在5个空格上,并向右缩进 用C怎么做 编辑1:如果我的宽度不是常数,并且我有一个变量,它决定了宽度,该怎么办。同样,子字符串的长度也是一个变量。现在有办法
123456789
,则以下代码应以后续方式显示
printf(Original);
printf(from 4-6, over 5 spaces)
输出:
123456789
456
也就是说456分布在5个空格上,并向右缩进
用C怎么做
编辑1:如果我的宽度不是常数,并且我有一个变量,它决定了宽度,该怎么办。同样,子字符串的长度也是一个变量。现在有办法吗
我能做点像这样的事吗
printf("%%d.%ds",width,precision,expression);
非常直接:
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);
。。。宽度相同将整数划分为特定数组,然后打印您喜欢的数组索引。我猜原始加3将从4开始字符串,使其停止在6?3%5.3s是精度(要打印的最大字符数)@DavidRF编辑问题,如果您可以添加到答案中?谢谢,比如说,我的字段宽度不是常数,我可以用什么方法合并它?也就是说,如果我有
width
变量,它会告诉我总的宽度代码>这现在在这里不起作用了,是吗?不是刚才问的问题差不多一样,尽管方式不同?
#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);