一个实现字符串反转的函数

2014-11-23 22:16:22 · 作者: · 浏览: 34

  提供两种方法:


  1、有中间变量


  2、无中间变量


  #include
  #include


  void reverse_str(char * ch);
  void reverse_str2(char *ch);


  int main(void)
  {
  char c[] = "Can you reverse me ";


  printf("original string c: \n%s\n", c);
  reverse_str(c);
  printf("reversed string after calling reverse_str: \n%s\n", c);
   reverse_str2(c);
   printf("reversed string after calling reverse_str2: \n%s\n", c);
   system("pause");


   return 0;
  }


  void reverse_str(char *ch) /*使用中间变量*/
  {
   int len;
   int i;
   len = strlen(ch)-1;
   char ctemp;


   for(i = 0; i < len-i; i++)
   {
   ctemp = ch[i];
   ch[i] = ch[len-i];
   ch[len-i] = ctemp;
   }
   ch[len+1] = 0;


  }


  void reverse_str2(char *ch) /*不用中间变量*/
  {
   int len;
   int i;
   len = strlen(ch)-1;
   char ctemp;


   for(i = 0; i < len-i; i++)
   {
   ch[i] = ch[i] ^ ch[len-i];
   ch[len-i] = ch[i] ^ ch[len-i];
   ch[i] = ch[i] ^ ch[len-i];
   }
   ch[len+1] = 0;
  }