有没有一种方法可以指定要打印的字符串的字符数(类似于int
中的小数位)?
printf ("Here are the first 8 chars: %s\n", "A string that is more than 8 chars");
想要打印出来:Here are the first 8 chars: A string
发布于 2010-02-11 03:08:41
基本方法是:
printf ("Here are the first 8 chars: %.8s\n", "A string that is more than 8 chars");
另一种通常更有用的方法是:
printf ("Here are the first %d chars: %.*s\n", 8, 8, "A string that is more than 8 chars");
在这里,您将长度指定为printf()的int参数,printf()将格式中的'*‘视为从参数获取长度的请求。
您还可以使用表示法:
printf ("Here are the first 8 chars: %*.*s\n",
8, 8, "A string that is more than 8 chars");
这也类似于"%8.8s“符号,但同样允许您在运行时指定最小和最大长度-在以下场景中更实际:
printf("Data: %*.*s Other info: %d\n", minlen, maxlen, string, info);
printf()
的POSIX规范定义了这些机制。
发布于 2010-02-11 03:11:04
除了指定固定的字符数之外,您还可以使用*
,这意味着printf从参数中获取字符数:
#include <stdio.h>
int main(int argc, char *argv[])
{
const char hello[] = "Hello world";
printf("message: '%.3s'\n", hello);
printf("message: '%.*s'\n", 3, hello);
printf("message: '%.*s'\n", 5, hello);
return 0;
}
打印:
message: 'Hel'
message: 'Hel'
message: 'Hello'
发布于 2010-02-11 03:05:41
printf ("Here are the first 8 chars: %.8s\n", "A string that is more than 8 chars");
%8s将指定最小宽度为8个字符。您希望在8处截断,因此请使用%.8s。
如果你想总是打印8个字符,你可以使用%8.8s
https://stackoverflow.com/questions/2239519
复制相似问题