Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中填充和添加二进制字符串_C_Binary - Fatal编程技术网

在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 >=

我的任务是用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 >= 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的定义以及整数大小在哪里?