C++程序崩溃了

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)

  • 在这里你通过给一个upvote给啤酒:) (2认同)