【问题标题】:char wont go past half my screen c++char 不会超过我屏幕的一半 c++
【发布时间】:2017-06-10 23:07:11
【问题描述】:

我正在制作地图系统,这里是我的 C++ 代码示例:

char map2[11][30] = {
"#############################",
"#@ #e   <                   #",
"#  #    #                   #",
"#  ############^#############",
"# ############  #############",
"#            # #            #",
"#            # #            #",
"#      *              *     #",
"#            # #            #",
"#            # #            #",
"#############################",

};

但它没有显示第二个"#############################"

我打印:

cout << map2[] << endl;

【问题讨论】:

  • 您究竟希望任何人在没有实际看到代码的情况下,或者甚至没有解释相关代码是 C++ 还是 C# 的情况下,就能找出打印此“地图”的代码出了什么问题。这是两种完全不同的语言。失败。
  • 我很惊讶它显示了第一个“############################”,因为这是一个声明,它不应该显示任何东西。
  • 我同意@SamVarshavchik,请提供Minimal, Complete, and Verifiable example

标签: c++ char


【解决方案1】:

好的,您的代码有很多错误。如果您通过迭代所有元素正确打印它,它应该可以正常工作,如下所示:

#include <iostream>

int main()
{
    char map2[11][30] = {
        "#############################",
        "#@ #e   <                   #",
        "#  #    #                   #",
        "#  ############^#############",
        "# ############  #############",
        "#            # #            #",
        "#            # #            #",
        "#      *              *     #",
        "#            # #            #",
        "#            # #            #",
        "#############################",
    };
    for (int i = 0; i < 11; ++i) {
        for (int j = 0; j < 30; ++j) {
            std::cout << map2[i][j];
        }
    }
}

但是,这假设您没有在地图每个部分的末尾打印新线,而只是打印板。 您还可以将循环更改为更好:

for (int i = 0; i < 11; ++i) {
     std::cout << map2[i] << "\n";
}

这会考虑到数组中的新行,所以板子看起来就像一块板子。

例如here

我还建议阅读其中一篇books,因为您似乎对 C++ 的掌握并不十分扎实。

【讨论】:

    【解决方案2】:

    这里展示了如何以两种不同的方式输出地图

    #include <iostream>
    
    int main()
    {
        char map2[11][30] = {
            "#############################",
            "#@ #e   <                   #",
            "#  #    #                   #",
            "#  ############^#############",
            "# ############  #############",
            "#            # #            #",
            "#            # #            #",
            "#      *              *     #",
            "#            # #            #",
            "#            # #            #",
            "#############################",
        };
    
        for (const auto &row : map2) std::cout << row << std::endl;
    
        std::cout << std::endl;
    
        for (size_t i = 0; i < sizeof(map2) / sizeof(*map2); i++)
        {
            std::cout << map2[i] << std::endl;
        }
    }
    

    程序输出是

    #############################
    #@ #e   <                   #
    #  #    #                   #
    #  ############^#############
    # ############  #############
    #            # #            #
    #            # #            #
    #      *              *     #
    #            # #            #
    #            # #            #
    #############################
    
    #############################
    #@ #e   <                   #
    #  #    #                   #
    #  ############^#############
    # ############  #############
    #            # #            #
    #            # #            #
    #      *              *     #
    #            # #            #
    #            # #            #
    #############################
    

    【讨论】:

      【解决方案3】:

      遍历该数组中的元素并打印出每个元素。我无法发表评论,但这是我的答案。另外我什至不确定这是否是问题所在。假设您不这样做,这只是一种更好的方法。

      下次你问的时候请把你的问题做得更好一点:)

      【讨论】:

      • 我的代码不会像控制台中的第 3 行或第 4 行那样过去
      【解决方案4】:

      让我以此作为我的回答的序言: 下次您提出问题时,请提供更多代码。 如果不提供实际打印的代码,您不能说您的代码不打印最后一行

      这对我有用:

      #include <stdio.h>
      
      using namespace std;
      
      
      int main() {
          char map2[11][30] = {
      "#############################",
      "#@ #e   <                   #",
      "#  #    #                   #",
      "#  ############^#############",
      "# ############  #############",
      "#            # #            #",
      "#            # #            #",
      "#      *              *     #",
      "#            # #            #",
      "#            # #            #",
       "#############################",};
          for (int i=0;i<11;i++){
              printf("%s \n", map2[i]);
          }
      
          return 0;
      }
      

      输出:

      #############################                                                                                                                                                        
      #@ #e   <                   #                                                                                                                                                        
      #  #    #                   #                                                                                                                                                        
      #  ############^#############                                                                                                                                                        
      # ############  #############                                                                                                                                                        
      #            # #            #                                                                                                                                                        
      #            # #            #                                                                                                                                                        
      #      *              *     #                                                                                                                                                        
      #            # #            #                                                                                                                                                        
      #            # #            #                                                                                                                                                        
      ############################# 
      

      【讨论】:

      • 打败我吧,阿纳夫。 :)
      • 你不需要包含&lt;iostream&gt;,假设你使用的是printf
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多