首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C将一维数组转换为二维数组

C将一维数组转换为二维数组
EN

Stack Overflow用户
提问于 2021-10-01 21:46:21
回答 2查看 48关注 0票数 0

我正在尝试转换一个一维数组(81个字符+ null),并将其转换为9x9字符网格。

代码语言:javascript
运行
复制
void convertArray(char lineHolder[])
{
    lineHolder[];      //I want this data
    converted2d[9][9];  //to go into that data
}
int drag(){
    char lineHolder[82];
    int puzzle = SOLVABLE;
    int last, i;
    last = i = 0;

    while ((last = getchar()) != EOF)
    {
      putchar(last);
        lineHolder[i] = last;
        i++;
    }
    return 0;
}
EN

回答 2

Stack Overflow用户

发布于 2021-10-01 21:50:50

您可以简单地使用memcpy()

代码语言:javascript
运行
复制
char name[82] = ... ;
char puzzle[9][9];
memcpy(puzzle, name, sizeof puzzle);

这两种类型的布局都是由标准完美定义的。

或者,您可以通过冒着触发未定义行为的风险来执行此操作,而无需复制。只需将name转换为char(*)[9] (指向9个字符的行的指针)。使用此指针将违反严格的别名规则,因此结果不是由C标准定义的。然而,它可能会起作用:

代码语言:javascript
运行
复制
char (*puzzle)[9] = (char(*)[9])name;
// use puzzle[y][x] syntax later on
票数 2
EN

Stack Overflow用户

发布于 2021-10-01 21:48:57

使用联合:

代码语言:javascript
运行
复制
union myunion
{
     char name[81];
     char puzzle[9][9];
};

或指向数组的指针。

代码语言:javascript
运行
复制
     char name[81];
     char (*puzzle)[9] = name;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69412259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档