如何在printf()中使用多个精度?

时间:2010-04-26 18:41:00

标签: c string formatting char printf

查看“Precision can be omitted or be any of:”标题下的信息。

示例:printf("%.*s", 3, "abcdef");有效,输出:abc(截断字符串的其余部分。)

现在,我想要一个包含多个参数格式化(截断)的字符串:

printf("%.*s, %.*s", 3, 3, "abcdef", "xyz123");

但程序崩溃了。

正确的语法是什么?

谢谢。

3 个答案:

答案 0 :(得分:5)

也许你应该改变秩序?

printf("%.*s, %.*s", 3, "abcdef", 3, "xyz123");

顺便说一句,如果你不需要它作为变量,你可以硬编码:

printf("%.3s, %.3s", "abcdef", "xyz123");

(Stephen Canon善意纠正错字)

答案 1 :(得分:2)

你想这样做:

printf("%.*s, %.*s", 3, "abcdef", 3, "xyz123");

格式参数的顺序应与格式说明符的顺序相同。

答案 2 :(得分:1)

printf("%.*s, %.*s",3,"abcdef",3,"xyz123");