当前位置:  开发笔记 > 编程语言 > 正文

如何使用fprintf/printf打印短划线或点?

如何解决《如何使用fprintf/printf打印短划线或点?》经验,为你挑选了2个好方法。

截至目前,我正在使用下面的线来打印出点

fprintf( stdout, "%-40s[%d]", tag, data);

我期待输出会像下面这样,

Number of cards..................................[500]
Fixed prize amount [in whole dollars]............[10]
Is this a high winner prize?.....................[yes]

如何使用fprintf/printf打印短划线或点?



1> Ates Goral..:

更快的方法:

如果事先知道您需要的最大填充量(通常是在格式化固定宽度表时的情况,例如您所拥有的那个),则可以使用静态"padder"字符串并且只是抓住一大块.这比调用printfcout循环更快.

static const char padder[] = "......................"; // Many chars

size_t title_len = strlen(title);
size_t pad_amount = sizeof(padder) - 1 - title_len;

printf(title); // Output title

if (pad_amount > 0) {
    printf(padder + title_len); // Chop!
}

printf("[%d]", data);

你甚至可以在一个声明中做到这一点,有一些信念的飞跃:

printf("%s%s[%d]", title, padder + strlen(title), data);



2> KeithB..:

您可以使用iostreams而不是printf轻松完成此操作

cout << setw(40) << setfill('.') << left << tag[i] << '[' << data[i] << ']' << endl;

或者,如果你真的需要使用fprintf(比如,你传递了一个FILE*来写)

strstream str;
str << setw(40) << setfill('.') << left << tag[i] << '[' << data[i] << ']' << endl;
printf(%s", str.str());

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有