Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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++_Arrays_Function_Char_Hamming Distance - Fatal编程技术网

C++ 汉明距离:计数不正确

C++ 汉明距离:计数不正确,c++,arrays,function,char,hamming-distance,C++,Arrays,Function,Char,Hamming Distance,我试图创建一个函数来计算两个字符串之间的汉明距离。当我调用这个函数时,它应该告诉我两个字符串之间不匹配的字符数 我的输出不正确。我不断得到随机数的结果。下面是我的代码: using namespace std; // function to calculate Hamming distance int HammingDistance(char seq1[], char seq2[]) { int i = 0, count = 0; while (seq1[i] != ' ')

我试图创建一个函数来计算两个字符串之间的汉明距离。当我调用这个函数时,它应该告诉我两个字符串之间不匹配的字符数

我的输出不正确。我不断得到随机数的结果。下面是我的代码:

using namespace std;

// function to calculate Hamming distance
int HammingDistance(char seq1[], char seq2[])
{
    int i = 0, count = 0;
    while (seq1[i] != ' ')
    {
        if (seq1[i] != seq2[i])
            count++;
        i++;
    }
    return count;
}


int main()
{
    char seq1[] = "doga";
    char seq2[] = "dogb";

    cout << HammingDistance(seq1, seq2) << endl;        

    return 0;
}
我在输出中不断得到随机数结果,比如99或207

在这个例子中,我应该得到1


非常感谢您对我所犯错误的任何帮助!多谢各位

应该使用\0而不是空格来测试字符串的结尾

那么,您的while应该是:while seq1[i]!='\0'

条件seq1[i]!=''这不是检查是否已到达字符串末尾的好方法。假设字符串以null结尾,则可以使用seq1[i]!='\而不是“0”

您看到随机结果的原因是循环没有遇到字符串中的空格,而是继续从字符串的末尾读入程序内存的其他部分。循环仅在遇到恰好包含与“”表示形式相同位的内存字节时停止

您还应该考虑如何处理两个字符串长度不同的情况