是否可以在C
中设置从字符串输出的字符数?
char const *str = "abcdefgh";
printf("%???s", str);
应该放置什么而不是???输出abc
?
答案 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 <
>
<
仅用于显示目的。