Joh*_*ohn 2 c++ string pointers strcmp
我有这个赋值来实现strcmp函数.有时它运行正常,但有时它会崩溃.请帮我.
#include <iostream>
using namespace std;
int mystrcmp(const char *s1, const char *s2);
int main()
{
cout<<mystrcmp("A","A")<<endl;
cout<<mystrcmp("B","A")<<endl;
cout<<mystrcmp("A","B")<<endl;
cout<<mystrcmp("AB","A")<<endl;
return 0;
}
int mystrcmp(const char *s1, const char *s2)
{
while (*s1==*s2)
{
s1++;
s2++;
}
if(*s1=='\0')
return(0);
return(*s1-*s2);
}
Run Code Online (Sandbox Code Playgroud)
cod*_*ict 10
如果两个输入都相同,它将崩溃,因为你的循环继续超出终止nul字符.
要解决此问题,您必须检查循环内的nul字符:
while (*s1==*s2) {
// if s1 points to nul character, then s2 should also, because of the ==
// which means we've reached the end of the strings and they are equal
// so return 0.
if(*s1=='\0')
return 0;
s1++;
s2++;
}
return *s1-*s2;
Run Code Online (Sandbox Code Playgroud)