这个功能有什么作用?

时间:2010-10-29 17:47:54

标签: c pointers loops

int mystery( const char *s1, const char *s2 ) {
  for( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++ ) {
    if( *s1 != *s2 ) {
      return 0;
    } //end if
  } //end for
  return 1;
}

我知道它有输入错误,但这正是它的原因。 谢谢你们,我需要它也运行,我已经添加了变量声明,但我得到编译器错误,说

在函数`int main()':
error: a function-definition is not allowed here before '{' token
error: expected
,'或`;'中在'{'令牌

之前

5 个答案:

答案 0 :(得分:11)

它会比较两个字符串,如果字符串1以字符串2开头,则返回1,反之亦然,如果不是,则返回0

答案 1 :(得分:4)

如果(s1,s2)中的较短者与较长者的开头不同,则返回0。字符串可以是不同的长度,但一个必须是从另一个的开头开始的子字符串。

编辑。哎呀sharth打败了我。在我面前投票给他。

答案 2 :(得分:3)

值得解释一下吗?

 for( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++ ) {

for循环中的第一个元素,在第一个';'之前初始设置,这里没有必要 因此,当s1和s2指向的任一字符不为零时,for循环运行。零标记c和c ++中字符串的结尾。
for循环的最后一部分是在每个循环上做的额外操作 - 在这种情况下,将指针s1和s2移动到指向每个字符串中的下一个字符。

   if( *s1 != *s2 ) {
      return 0;

如果s1和s2指向的字符不相同 - 即我们在两个字符串中找到了第一个不同的字符,则返回0即为假

return 1;

如果我们到达其中一个字符串的末尾并且我们没有找到任何不同的字符返回1 - 即为真。

因此,如果字符串相同或一个字符串以另一个字符串开头,则函数返回true,false表示字符串具有不同的字符。

答案 3 :(得分:1)

这段代码在Java中看起来像这样

   int specificComparison(String s1, String s2){
        int minLength = Math.min(s1.length(), s2.length());
        if(s1.substring(0, minLength).equals(s2.substring(0, minLength)){
            return 1;
        }else{
            return 0;
        }
   }

答案 4 :(得分:0)

当两个字符串相等时,看起来这个函数返回1,而当它们不相等时,返回0。

至少,这可能是故意。