【发布时间】:2016-12-04 22:22:49
【问题描述】:
我必须读取几乎 1M 长度相同的 1 和 0(即 01111010)字符串,并比较它们在 C 上的汉明距离。
我的想法是做这样的事情: 代码 #1
typedef struct _matrix
{
unsigned int n_rows;
unsigned int n_cols;
char ** mat;
} matrix;
matrix *create_matrix(matrix *mtrx)
{
//char** mat;
//matrix* mtrx = malloc(sizeof(matrix));
int x=10, y=10, i;
mtrx->mat = calloc(x+1, sizeof(char*));
for(i = 0;i<y;i++) mtrx->mat[i] = calloc(y+1, sizeof(char));
mtrx->n_rows = x;
mtrx->n_cols = y;
return mtrx;
}
int main()
{
matrix* mtrx = malloc(sizeof(matrix));
mtrx = create_matrix(mtrx);
int i;
for(i=mtrx->n_rows;i>=0;i--) free(mtrx->mat[i]);
free(mtrx->mat);
free(mtrx);
return 0;
}
这将创建一个 10x10 的 char 矩阵:100bytes。 由于我将使用二进制字符串,因此我只想对矩阵上的每个元素使用一点而不是字节。我刚刚发现了位域,但我不知道如何使用它来使代码#1 使用 100 位。
感谢
【问题讨论】:
-
calloc不需要演员表 - 这很糟糕 - 请参阅 stackoverflow.com/questions/605845/… -
嗯,我不知道有那么糟糕。
-
sizeof(char)定义为 1。 -
1 字节,我正在寻找是否可以使用 1bit
标签: c matrix bit bit-fields