2014-10-08 33 views
0
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; 
} 

我不知道是什么错误的操作,但or操作不成功的字符串的字符每一个。或在C二进制字符串给一半输出错误

+1

我想您是'NUM1 =(NUM1 | NUM2)+ '0';' – 2014-10-08 21:26:26

+0

请澄清。你提供的确切输入是什么,你得到的输出和你期望的输出是什么? – 2014-10-08 21:28:24

+0

@Lashane我需要计算或2个字符串str1和str2并将其保存到str1。不,它不工作! – Teena 2014-10-08 21:29:30

回答

1

如果您想要一个函数返回包含任何一个字符串中的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和你目前并副作用。

在得到的逻辑与的串线

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

存储str1,改为

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