将字符串的 printf 填充 0

发布于 2024-12-26 14:48:08 字数 122 浏览 1 评论 0原文

有没有办法将 printf 中字段宽度填充中的空格字符替换为 0

使用的代码

printf("%010s","this");

似乎不适用于字符串!

Is there a way to replace the space character to 0 in printf padding for field width

Code used

printf("%010s","this");

Doesnt seem to work for strings!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

橘味果▽酱 2025-01-02 14:48:08

事实上,0 标志仅适用于数字转换。您必须手动执行此操作:

int print_padleftzeroes(const char *s, size_t width)
{
    size_t n = strlen(s);
    if(width < n)
        return -1;
    while(width > n)
    {
        putchar('0');
        width--;
    }
    fputs(s, stdout);
    return 0;
}

Indeed, the 0 flag only works for numeric conversions. You will have to do this by hand:

int print_padleftzeroes(const char *s, size_t width)
{
    size_t n = strlen(s);
    if(width < n)
        return -1;
    while(width > n)
    {
        putchar('0');
        width--;
    }
    fputs(s, stdout);
    return 0;
}

 test="ABCD"
 printf "%0$(expr 9 - ${#test})d%s" 0 $test

那也能给你你需要的东西吗

 ~:00000ABCD

或者您想用其他数字填充,只需更改

  printf "%0$(expr 9 - ${#test})d%s" 1 $test

即可给您

 ~:11111ABCD

what about

 test="ABCD"
 printf "%0$(expr 9 - ${#test})d%s" 0 $test

that will give you what you need too.

 ~:00000ABCD

or is you want to padd with other numbers just change

  printf "%0$(expr 9 - ${#test})d%s" 1 $test

will give you

 ~:11111ABCD
云淡风轻 2025-01-02 14:48:08

试试这个:

printf("%010d%s", 0, "this");

Try this:

printf("%010d%s", 0, "this");
初吻给了烟 2025-01-02 14:48:08

对于 golang 试试这个(可以翻译成 C):

str := "this"
printf("0000000000"[:10-len(str)] + str)

for golang try this (can be translated to C):

str := "this"
printf("0000000000"[:10-len(str)] + str)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文