我做了以下功能:
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/