使用printf

时间:2016-09-25 14:39:22

标签: c printf

我正在用c编写程序,我使用printf()函数在我的屏幕上显示信息。在我的程序中,我有一些问题填充包含普通字符和%s标志的字符串。

以下是我目前的一段代码:

printf ("<%s>\t%s\n", type, name);

// displays the following text:
//    <int>    x
//    <char>   c
//    <double**>      d

由于type变量长度的变化,使用制表有时会导致列之间的偏移。我想指定<type>文本最多可以包含10个字符,并且只开始在第12个字符处显示名称,如下所示:

<int>      a
<char>     b
<double**> x
^^^^^^^^^^^^ <- 12th column

我已经阅读了几个使用%12s%-12s向左或向右填充字符串的问题。但是,我要填写的部分是<%s>。如何指定其长度,因为它包含常规字符(<>)和%s标记?

1 个答案:

答案 0 :(得分:0)

-11使字段11变宽,左对齐第一个值。

然后两个值之间有一个空格。

然后是最终值......

#include <stdio.h>

int main(void)
{
    printf("%-11s %s\n", "<int>" ,     "x");
    printf("%-11s %s\n", "<char>" ,    "c");
    printf("%-11s %s\n", "<double**>", "d");

    return 0;
}

<int>       x
<char>      c
<double**>  d

假设您的字符串符合11个字符。如果它更长,它会溢出

#include <stdio.h>

int main(void)
{
    printf("%-11s %s\n", "<int>" ,     "x");
    printf("%-11s %s\n", "<char>" ,    "c");
    printf("%-11s %s\n", "<double**>", "d");
    printf("%-11s %s\n", "<abcdefghijklmnopqrstuvwxyz>", "alphabet");

    return 0;
}

<int>       x
<char>      c
<double**>  d
<abcdefghijklmnopqrstuvwxyz> alphabet

这是一个不错的异地cheat sheet