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

  • 实现字符串的翻转,如:student a am i ----->i am a student.
首先,实现字符串整体的逆转----->void Reverse() 和  int  strlen()
然后,实现每个子字符串的逆转----->开始为空格的空格的后一位,结束为 '\0'.
    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
    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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值