【问题标题】:Error with printf Cprintf C 出错
【发布时间】:2018-02-28 08:08:45
【问题描述】:

所以我用 C 语言编写了这段代码,它应该打印如下所示的地图。

printf ("(1)--------------------------------------------4T------5I        6P------7T-------------------------------------------(2)\n");
printf ("[%i]                                           [%i]     [%i]       [%i]     [%i]                                           [%i]\n", bs[1].leader, bs[4].leader, bs[5].leader, bs[6].leader, bs[7].leader, bs[2].leader);
printf (" \                                             |        \       /        |                                             / \n");
printf ("  \                                            |         \     /         |                                            /  \n");
printf ("   \                                           8T         \ 9T/         10T                                          /   \n");
printf ("    \                                         [ ]----------[ ]----------[ ]                                         /    \n");
printf ("     \                                         |            |            |                                         /     \n");
printf ("      \                                        |            |            |                                        /      \n");
printf ("      11P                                     12I          13I          14I                                     15P      \n");
printf ("      [ ]-------------------------------------[ ]----------[ ]----------[ ]-------------------------------------[ ]      \n");
printf ("        \                                      \            |            /                                      /        \n");
printf ("         \                                      16T        17I        18T                                      /         \n");
printf ("          \                                     [ ]--------[ ]--------[ ]                                     /          \n");
printf ("           \                                     \          |          /                                     /           \n");
printf ("           19M                                    20R      21P      22R                                    23M           \n");
printf ("           [ ]------------------------------------[ ]------[ ]------[ ]------------------------------------[ ]           \n");
printf ("             \                                      \               /                                      /             \n");
printf ("              24P                                    25I   26I   27I                                    28I              \n");
printf ("              [ ]                                    [ ]---[ ]---[ ]                                    [ ]              \n");
printf ("                \                                      \    |    /                                      /                \n");
printf ("                29I                                    30T 31P 32T                                    33I                \n");
printf ("                [ ]------------------------------------[ ]-[ ]-[ ]------------------------------------[ ]                \n");
printf ("                  \                                       \ | /                                       /                  \n");
printf ("                   ----------------------------------------(3)----------------------------------------                   \n");
printf ("                                                           [ ]                                                           \n");

问题是,它不打印那个。它跳过了很多字符。有什么想法吗?

【问题讨论】:

    标签: c printf


    【解决方案1】:

    在 C 字符串中,您需要将\ 加倍(即"\\")来表示一个'\'

    所以你可以把你的代码写成:

    void pprint(){
    
        int bs[6];
        bs[0] = 7;
        bs[1] = 1;
        bs[2] = 2;
        bs[3] = 3;
        bs[4] = 4;
        bs[5] = 5;
        bs[6] = 6;
    
        printf ("(1)--------------------------------------------4T------5I        6P------7T-------------------------------------------(2)\n");
        printf ("[%i]                                           [%i]     [%i]       [%i]     [%i]                                           [%i]\n", bs[1], bs[4], bs[5], bs[6], bs[0], bs[2]);
        printf (" \\                                             |        \\       /        |                                             / \n");
        printf ("  \\                                            |         \\     /         |                                            /  \n");
        printf ("   \\                                           8T         \\ 9T/         10T                                          /   \n");
        printf ("    \\                                         [ ]----------[ ]----------[ ]                                         /    \n");
        printf ("     \\                                         |            |            |                                         /     \n");
        printf ("      \\                                        |            |            |                                        /      \n");
        printf ("      11P                                     12I          13I          14I                                     15P      \n");
        printf ("      [ ]-------------------------------------[ ]----------[ ]----------[ ]-------------------------------------[ ]      \n");
        printf ("        \\                                      \\            |            /                                      /        \n");
        printf ("         \\                                      16T        17I        18T                                      /         \n");
        printf ("          \\                                     [ ]--------[ ]--------[ ]                                     /          \n");
        printf ("           \\                                     \\          |          /                                     /           \n");
        printf ("           19M                                    20R      21P      22R                                    23M           \n");
        printf ("           [ ]------------------------------------[ ]------[ ]------[ ]------------------------------------[ ]           \n");
        printf ("             \\                                      \\               /                                      /             \n");
        printf ("              24P                                    25I   26I   27I                                    28I              \n");
        printf ("              [ ]                                    [ ]---[ ]---[ ]                                    [ ]              \n");
        printf ("                \\                                      \\    |    /                                      /                \n");
        printf ("                29I                                    30T 31P 32T                                    33I                \n");
        printf ("                [ ]------------------------------------[ ]-[ ]-[ ]------------------------------------[ ]                \n");
        printf ("                  \\                                       \\ | /                                       /                  \n");
        printf ("                   ----------------------------------------(3)----------------------------------------                   \n");
        printf ("                                                           [ ]                                                           \n");
    }
    

    请注意,如果没有替换(使用%),您可能应该更喜欢puts() 而不是printf() - 但请注意puts() 包含自己的最终换行符。

    【讨论】:

    • C++ 有原始字符串字面量,这让生活更轻松。不幸的是C doesn't support it
    • 感谢 m8!我试试看。 编辑:成功了!谢谢,我会记住这一点,以备后用
    • 使用fputs("…", stdout) 不会像puts("…") 那样添加换行符。
    猜你喜欢
    • 2020-08-15
    • 2012-11-20
    • 1970-01-01
    • 2011-02-27
    • 2012-02-28
    • 1970-01-01
    • 2013-10-12
    • 2015-08-05
    • 2018-09-23
    相关资源
    最近更新 更多