基本上,我正在尝试在整数数组中写入从0到N的所有数字的二进制表示形式。
例如:假设N = 7,我最多需要3位。我想制作一个看起来像这样的数组:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
我尝试过此操作,这是对以下已回答问题(C - Convert Integer to Binary Array)的代码的修改:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void int_to_bin_digitvector(unsigned int in, int count, int** out)
{
unsigned int mask = 1U << (count-1);
for (int j = 0; j < in; j++)
{
for (int i = 0; i < count; i++)
{
out[j][i] = (j & mask) ? 1 : 0;
j <<= 1;
}
}
}
int main(int argc, char* argv[])
{
int num;
if (argc == 1)
num = 40;
else
num = atoi(argv[1]);
int (*digit)[8] = malloc(num*sizeof(*digit));
int_to_bin_digitvector(num, 8, digit);
for (int j = 0; j < num; j++)
{
for (int i= 0; i < 8; i++ )
{
printf("%d\t",digit[j][i]);
}
printf("\n");
}
free(digit);
return 0;
}
这似乎不起作用,我是C的新手。我猜测某种程度上,我正在创建的数组未正确解释为无法馈送到创建数组的函数中。