gpt4 book ai didi

c - c 中二进制字符串的 OR 运算给出一半输出错误

转载 作者:行者123 更新时间:2023-11-30 15:29:25 25 4
gpt4 key购买 nike

int stringXor(char *str1,char *str2)
{
int num1=0,num2=0;
for (int i = 0; i<strlen(str1); i++)
{
num1=str1[i]-'0';
num2=str2[i]-'0';
num1 = num1 | num2;
str1[i]=(char)num1;
//printf("%d",str1[i]);
}

int count=0;
for(int j=0;j<strlen(str1);j++)
{
if(str1[j]==1)
count++;
}
return count;
}

我不知道错误是什么,但对字符串的每个字符进行操作均未成功。

最佳答案

如果您想要一个函数返回任一字符串中包含 1 的位置数,请考虑编写一个更简单的函数来执行此操作。例如:

int CountOnes( char *str1, char *str2 )
{
int count = 0;
int len = strlen( str1 ); // we assume that strlen(str1) == strlen(str2)

for ( int i = 0; i < len; i++ )
{
if ( str1[ i ] == '1' || str2[ i ] == '1' )
count++;
}

return count;
}

请注意,此函数不会像您当前的那样包含更改 str1 的副作用。

要将生成的 OR 字符串存储到 str1,请更改该行

if ( str1[ i ] == '1' || str2[ i ] == '1' )

str1[ i ] = ( ( str1[ i ] - '0' ) | ( str2[ i ] - '0' ) ) + '0';
if ( str1[ i ] == '1' )
count++;

关于c - c 中二进制字符串的 OR 运算给出一半输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26266694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com