【问题标题】:Strings in multidimensional array in CC中多维数组中的字符串
【发布时间】:2013-12-01 11:06:33
【问题描述】:

如何在不使用指针的情况下用 C 语言为字符串定义数组?我正在尝试创建一个棋盘。

#include <stdio.h>
#include <string.h>

int main(void){

char board[8][8] = {{ "R1 ", "N1 ", "B1 ", "QU ", "KI ", "B2 ", "N2 ", "R2 "},

                   { "P1 ", "P2 ", "P3 ", "P4 ", "P5 ", "P6 ", "P7 ", "P8 "},
                   { "","","","","","","",""},
                   { "","","","","","","",""},
                   { "","","","","","","",""},
                   { "","","","","","","",""},
                   { "p1 ", "p2 ", "p3 ", "p4 ", "p5 ", "p6 ", "p7 ", "p8" },
                   {"r1 ", "n1 ", "b1 ", "qu ", "ki ", "b2 ", "n2 ", "r2 "}};

}

我收到错误“char 数组初始化程序中的多余元素”。我该怎么办 ?我不允许使用指针。

【问题讨论】:

  • 您在 char 数组中放置字符串而不是字符作为元素。
  • C 中的字符串是字符数组。你不能得到一个没有指针的字符串。
  • 你的初始化器是char * board[8][8]的初始化器。它带有 8X8 的“字符串”。 char[8][8] 预计 8X8 chars。
  • 这是一个 8x8 字符数组:char board[8][8]。你想要一个 8x8 的字符串数组:char *board[8][8].

标签: c arrays string multidimensional-array


【解决方案1】:

您正在定义一个由字符串组成的二维数组。由于字符串本身是 C/C++ 中的数组,因此您实际上是在创建一个 3D 数组。

有多种方法可以解决此问题:

  • 您可以使用char *board[8][8] 定义一个8x8 的字符串指针数组。
  • 您可以使用char board[8][8][4] 来添加缺失的维度(无论单个条目有多长,这都会使用相同的内存;每个条目最多可以有 3 个字符加上 1 个终止符)。

附带说明,您应该使用 const 关键字,因为您通常不想修改字符串内容。

【讨论】:

    猜你喜欢
    • 2014-04-05
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多