【发布时间】:2016-05-08 16:35:06
【问题描述】:
我遗漏了一些代码,但基本上我有一个小数数组,我正在尝试将其转换为二进制数,但作为字符串数组。对 C 来说是全新的,现在真的抓住了稻草。我非常不确定 malloc 和 calloc 是如何使用的。这是我试图让它为第一个数字/二进制字符串工作的尝试:
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
void binstringconvert (unsigned long int *decimals, char **binarystrings);
int main (int argc, char **argv)
{
// initialize variables
int numLines = 9;
int binaryLength = 32;
unsigned long int decimals[numLines];
decimals[0] = 3241580200;
// convert decimal array to 32-bit binary string array
char **binarystrings = calloc (numLines, binaryLength);
binstringconvert(decimals, binarystrings);
// test print
printf("\n\n%lu in binary number system is: ", decimals[0]);
printf("\n%s", binarystrings[0]);
}
void binstringconvert (unsigned long int *decimals, char **binarystrings)
{
int c, k;
for (c = 31; c >= 0; c--)
{
k = decimals[0] >> c;
if (k & 1)
binarystrings[0][c] = '1';
else
binarystrings[0][c] = '0';
}
}
我是否正确初始化了binarystrings?我是否能够按照我尝试的方式写入单个字符?目前它给了我一个段错误。
【问题讨论】:
-
不要只将大小硬编码到
calloc()。指定元素的数量和每个元素的大小(使用sizeof()运算符)。 -
我现在放了一个变量
-
binarystrings[0]未初始化。 -
你真的需要一个指向字符串的指针数组吗?你只使用过
binarystrings[0]。 -
这只是一个测试用例,我实际上有一个来自文本文件的小数数组。在我让它为
binarystrings[0]工作后,我的计划是为其余索引围绕它放置一个 for 循环。
标签: c arrays string binary calloc