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” 您看到随机结果的原因是循环没有遇到字符串中的空格,而是继续从字符串的末尾读入程序内存的其他部分。循环仅在遇到恰好包含与“”表示形式相同位的内存字节时停止 您还应该考虑如何处理两个字符串长度不同的情况