c - 小数组组成大数组

标签 c arrays

我做了以下功能:

int * getMat(char x){
    int[2][2] returnValue;
    switch(x){
        case "0": returnValue = [0,0;0,0];
                break;
        case "1": returnValue = [1,1;1,0];
                break;
        .... 
        etc
    }
    return returnValue;
}

在主函数中,我有这些 vector :

 char a[] = "010110"
 int bigArray[100][2];

我需要通过迭代 a[] 中的每个字符来填充 bigArray[][],并将 getMat() 返回的数组添加到 bigArray。

换句话说,对于字符序列“010110”,bigArray 应该如下所示:

[0,0,1,1,0,0,1,1,1,1,0,0;
 0,0,1,0,0,0,1,0,1,0,0,0]

我被困在这个:

int bigArray[100][2];
for(int i=0; i<strlen(a); i++){
    int mat[2][2] = getMat(a[i]);

}

有人可以帮我一些建议吗?我不知道如何继续。

最佳答案

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

int (*getMat(char x))[2][2] {
    static int returnValue[][2][2] = {
        {{0,0},{0,0}},
        {{1,1},{1,0}},
        //...
    };
    switch(x){
    case '0':
        return &returnValue[0];
    case '1':
        return &returnValue[1];
    //.... 
    //etc
    }
    return NULL;
}


int main(void){
    char a[] = "010110";
    int bigArray[2][100];
    int (*tmp)[2][2];
    for(int i=0;a[i];++i){
        tmp = getMat(a[i]);
        memcpy(&bigArray[0][i*2], &(*tmp)[0], sizeof((*tmp)[0]));
        memcpy(&bigArray[1][i*2], &(*tmp)[1], sizeof((*tmp)[1]));
    }
    //test print
    for(int i=0;i<12;++i)
        printf("%d ", bigArray[0][i]);//0 0 1 1 0 0 1 1 1 1 0 0
    printf("\n");
    for(int i=0;i<12;++i)
        printf("%d ", bigArray[1][i]);//0 0 1 0 0 0 1 0 1 0 0 0
    printf("\n");
    return 0;
}

关于c - 小数组组成大数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24342442/

相关文章:

c - 预响应参数 WTSSendMessage

c - 使用 libusb 时出现 USB 权限错误

尝试分配数组时 C 无法比较的类型

java - N * N 皇后算法获取坐标

c - 将函数返回赋值给 char 数组变量

c - 有没有更好的方法来计算一维数组包含多少个元素?

c - 为什么这个 If 语句不执行代码?

c - 在 if 语句中无法重新分配内存

javascript - 如何从 Backbone.Collection 中删除模型

php - 如何从 PHP 数组中的每个字符串中删除文件扩展名?