是否可以在printf中设置字符数

时间:2013-09-25 13:31:11

标签: c printf

是否可以在C中设置从字符串输出的字符数?

char const *str = "abcdefgh";
printf("%???s", str);

应该放置什么而不是???输出abc

4 个答案:

答案 0 :(得分:6)

是的,您可以使用精确说明符,它看起来像这样

printf("%.3s", str); // this prints "abc"

答案 1 :(得分:3)

是的,您可以使用printf("%.3s" , str)printf("%.*s" , 3 , str);

答案 2 :(得分:2)

printf具有以下定义:

int printf ( const char * format, ... );

格式说明符遵循此原型:

%[flags][width][.precision][length]specifier

您可以查看here以获取有关这些说明符的概述。

.number
  

对于s:这是要打印的最大字符数。通过   默认打印所有字符,直到结束空字符为止   遇到。

但是,正如Happy Yellow Face所写,printf("%.3s", str);工作正常。

答案 3 :(得分:1)

这个问题确实说“设置字符数”而不是“限制字符数”。

提出的3个解决方案是第二个。当str像“ab”一样小时,这是显而易见的。

要将数字“设置”为3使用

printf(">%3.3s<\n" , "abcdef");
printf(">%3.3s<\n" , "ab");        // right justify
printf(">%-3.3s<\n" , "ab");       // left justify
printf(">%*.*s<\n" , 3, 3, "ab");  // right justify
printf(">%*.*s<\n" , -3, 3, "ab"); // left justify

>abc<
> ab<
>ab <
> ab<
>ab <

> <仅用于显示目的。