输入一串字符,实现翻转(指针和函数的应用)

  • 实现字符串的翻转,如:student a am i ----->i am a student.
首先,实现字符串整体的逆转----->void Reverse() 和  int  strlen()
然后,实现每个子字符串的逆转----->开始为空格的空格的后一位,结束为 '\0'.
    #include 
    #include 
    #include 
    int strlen (const char *str)
    {
      int count =0;
      assert (*str!=NULL);
      while (*str)
        {
          count++;
          str++;
        }
      return count ;
   }
   
  void Reverse_r (char *start,char *end)
  {
    while (start < end)
    {
      char tmp=*start;
      *start=*end;
      *end=tmp;
      start++;
      end--;
    }
  }

void Reverse (char *str)
{
  char *left=str;
  char *right =str+strlen (str)-1;
  char *cur=str;
  Reverse_r (left,right);
  while (*cur)  //从第一个子串的起点开始找起
  {
     while ((*cur!=' ') && (*cur!='/0'))
     {
       cur++;
     }
     Reverse (start,cur-1);   //第一个子串的尾点为空格的前一位
    if (*cur==' ')
    {
      cur++;   //调到下一个子串的起点
    }
  }
}

int main ( )
{
  //char arr[]="student a am i";
  //当选择自由输入要逆转字符串的内容时,用 gets.
  char arr[]={0};
  gets ( );
  Reverse (arr);
  printf ("%s",arr);
  printf ("\n");
  system ("pause);
  return 0;
}

你可能感兴趣的:(输入一串字符,实现翻转(指针和函数的应用))