船长的箱子 发表于 2017-6-5 21:50:32

这段代码是什么意思啊

请帮忙注释一下
int cmp( char *str1, char *str2 )
{
      int i = 0, j = 0;

      while( str1 )
      {
            while( str2 == str1 )
            {
                  i++;
                  j++;
                  if( !str2 )
                  {
                        return 0;
                  }
            }
            j = 0;
            i++;
      }

      return -1;

}

抑痒指 发表于 2017-6-7 11:14:57

str1包含str2 就返回0
否则返回-1

船长的箱子 发表于 2017-6-7 15:23:23

能详细说明一下吗
我不懂

船长的箱子 发表于 2017-6-7 18:41:32

既然是否则返回-1
为什么没有else

Messj 发表于 2017-6-7 19:55:57

while( str1 )
      {
            while( str2 == str1 )
            {
                  i++;
                  j++;
                  if( !str2 )
                  {
                        return 0;
                  }
            }
            j = 0;
            i++;
      }
这一段是用来检测str1中是否包含str2。
其中,
while( str2 == str1 )
            {
                  i++;
                  j++;
                  if( !str2 )
                  {
                        return 0;
                  }
            }
这一段是检测 str2 == str1是否成立直到两种情况会退出。
第一种,你应该能想到,str2不等于str1,条件为假,自动跳出。
第二种,str2一直检测到了最后都没有跳出返回0,即if( !str2 )。return的功能是为函数返回一个结果,函数的主要目的就是求结果。当得到这个结果,直接退出整个函数。
return -1;
返回一个标明错误的指示,即-1

船长的箱子 发表于 2017-6-8 20:55:22

#include <stdio.h>



void main()
{
      char str;
      int cmp( char *str1, char *str2 );

      printf("Please enter the website you like the best : ");
      scanf("%s", str);

#ifndef CORRECT
#define CORRECT "fishc.com"
#endif

      if( cmp( str, CORRECT ) == 0 )
      {
            printf("\nYeah! You are a smart man!\n\n");
      }
      else
      {
            printf("\nYou fool! Man!!\n\n");
      }

}

int cmp( char *str1, char *str2 )
{
      int i = 0, j = 0;

      while( str1 )
      {
            while( str2 == str1 )
            {
                  i++;
                  j++;
                  if( !str2 )
                  {
                        return 0;
                  }
            }
            j = 0;
            i++;
      }

      return -1;

}
这是完整的代码
这里的STR 和STR1 STR2是什么关系

船长的箱子 发表于 2017-6-8 22:27:27

这是第九章的第三节的内容

船长的箱子 发表于 2017-6-8 22:32:24

str2是不是等于fishc.com
为什么

Messj 发表于 2017-6-8 23:53:20

str1和str2是形参。
str是实参

Messj 发表于 2017-6-8 23:56:04

str2是一个形参,它在没有赋值前只是个指针变量。
只有在cmp( str, CORRECT )中,str2才被赋值fishc.com

我建议你重学一遍函数。c++的话可以看c++ primer plus这本书。
页: [1]
查看完整版本: 这段代码是什么意思啊