printf C出错

问题描述 投票:-1回答:1

所以我在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个回答
5
投票

在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()包含自己的最终换行符。

© www.soinside.com 2019 - 2024. All rights reserved.