2014-10-08 36 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++;