在C中填充和添加二进制字符串
我的任务是用C语言编写一个程序,它接受二进制数字字符串并将其相加。这两个字符串可以有不同的长度,因此在添加它们之前,需要将它们填充到相同的大小在C中填充和添加二进制字符串,c,binary,C,Binary,我的任务是用C语言编写一个程序,它接受二进制数字字符串并将其相加。这两个字符串可以有不同的长度,因此在添加它们之前,需要将它们填充到相同的大小 //Make copy of strings with proper padding char *aCopy = (char *)calloc(size+1,sizeof(char)); char *bCopy = (char *)calloc(size+1,sizeof(char)); int i; for(i = size; i >=
//Make copy of strings with proper padding
char *aCopy = (char *)calloc(size+1,sizeof(char));
char *bCopy = (char *)calloc(size+1,sizeof(char));
int i;
for(i = size; i >= 0; i--)
{
aCopy[i] = '0';
bCopy[i] = '0';
}
for (i = strlen(a); i >= 0; i--)
if (i == 0 && a[i]=='1') //Two's complement
aCopy[i] = '1';
else
aCopy[size - i] = a[strlen(a)-i];
for (i = strlen(b); i >= 0; i--)
if (i == 0 && b[i]=='1') //Two's complement
bCopy[i] == '1';
else
bCopy[size - i] = b[strlen(b)-i];
我遇到一个问题,如果注释为“2的补码”的行被运行(它们用于将前导1位移到填充字符串的前面),填充字符串的长度将比它应该的长度多一个。我搞不清楚为什么会发生这种情况,这会把我的计算搞砸
编辑:为了澄清,在两个补码字符串的末尾添加了一个额外的“0”字符。您可以使用
strlen
,就好像它是无成本的一样。它很昂贵,而且你不必要地使用它。使用中间变量并仅计算一次strlen,因为它是不变的。@PaulOgilvie我正在将它设置为一个包含“0”个字符的字符串。Calloc将其设置为值0,表示字符串终止,对第二条评论表示歉意。我将删除它。数组a和b的定义以及整数大小在哪里?