从C中的字符串打印特定字符

que*_*ion 0 c string printf

我正在研究一个字符串的前缀,例如:com应该给我c co com.我知道打印一个字符就是printf("%.5s",string)打印前五个值.我想在一个循环而不是5中做这个,我怎么能用i一个递增的值替换它,就像这样printf("%.is",string).我怎么能得到这个?

M O*_*ehm 5

printf格式说明符中,所有字段宽度(在点之前)和精度(在点之后)可以作为星号给出*.对于每个星号,int在打印对象之前必须有一个附加参数.

那么,对于你的问题:

printf("%.*s", i, string);
Run Code Online (Sandbox Code Playgroud)

请注意,附加参数必须是a int,因此如果您有另一个整数类型,则应该强制转换它:

size_t len = strlen(len);
if (len > 2) printf("%.*s", (int) (len - 2), string);
Run Code Online (Sandbox Code Playgroud)