首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法使用printf()指定要打印的字符串的字符数?

有没有办法使用printf()指定要打印的字符串的字符数?
EN

Stack Overflow用户
提问于 2010-02-11 03:01:08
回答 8查看 134.1K关注 0票数 150

有没有一种方法可以指定要打印的字符串的字符数(类似于int中的小数位)?

代码语言:javascript
复制
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

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-02-11 03:08:41

基本方法是:

代码语言:javascript
复制
printf ("Here are the first 8 chars: %.8s\n", "A string that is more than 8 chars");

另一种通常更有用的方法是:

代码语言:javascript
复制
printf ("Here are the first %d chars: %.*s\n", 8, 8, "A string that is more than 8 chars");

在这里,您将长度指定为printf()的int参数,printf()将格式中的'*‘视为从参数获取长度的请求。

您还可以使用表示法:

代码语言:javascript
复制
printf ("Here are the first 8 chars: %*.*s\n",
        8, 8, "A string that is more than 8 chars");

这也类似于"%8.8s“符号,但同样允许您在运行时指定最小和最大长度-在以下场景中更实际:

代码语言:javascript
复制
printf("Data: %*.*s Other info: %d\n", minlen, maxlen, string, info);

printf()的POSIX规范定义了这些机制。

票数 262
EN

Stack Overflow用户

发布于 2010-02-11 03:11:04

除了指定固定的字符数之外,您还可以使用*,这意味着printf从参数中获取字符数:

代码语言:javascript
复制
#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;
}

打印:

代码语言:javascript
复制
message: 'Hel'
message: 'Hel'
message: 'Hello'
票数 19
EN

Stack Overflow用户

发布于 2010-02-11 03:05:41

代码语言:javascript
复制
printf ("Here are the first 8 chars: %.8s\n", "A string that is more than 8 chars");

%8s将指定最小宽度为8个字符。您希望在8处截断,因此请使用%.8s。

如果你想总是打印8个字符,你可以使用%8.8s

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2239519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档