C语言字符串反转需物资

在第18天:利用递归函数调用方式,将所输入的字符以相反顺序打印出来中,已经用过递归实现字符顺序输入,逆序输出,今天的题目是字符串反转,将以字符数组的形式来进行操作。

 

代码实现

#include <stdio.h>
#include <string.h>
#define MAX_LENGTH  50 //最大长度
char *String_Invertion(char *str);
int main()
{
  char string[MAX_LENGTH];
  printf("请输入一个字符串\n");
  scanf("%s", string);
  String_Invertion(string);
  printf("反转后的字符串为%s\n", string);
  return 0;
}
/**
* @brief 字符串反转函数
* @param str 目标字符串
* @return 反转后的字符串(str)
*/
char *String_Invertion(char *str)
{
  if(str == NULL)
      return NULL;
  int len = strlen(str);
  int i = 0;
  for(i = 0; i < len / 2; i++) //替换len/2次
  {
      /* (按位)异或交换法,其他交换法参考day27 */
      str[i] = str[i] ^ str[len - 1 - i];
      str[len - 1 - i] = str[i] ^ str[len - 1 - i];
      str[i] = str[i] ^ str[len - 1 - i];
  }
  return str;
}

运行结果

在这里插入图片描述

 

网上参考

//  Created by www.runoob.com on 15/11/9.
//  Copyright  2015年 菜鸟教程. All rights reserved.
//
#include <stdio.h>

void reverse(char* s)
{
  // 获取字符串长度
  int len = 0;
  char* p = s;
  while (*p != 0)
  {
      len++;
      p++;
  }
  // 交换 ...
  int i = 0;
  char c;
  while (i <= len / 2 - 1)
  {
      c = *(s + i);
      *(s + i) = *(s + len - 1 - i);
      *(s + len - 1 - i) = c;
      i++;
  }
}
int main()
{
  char s[] = "www.runoob.com";
  printf("'%s' =>\n", s);
  reverse(s);           // 反转字符串
  printf("'%s'\n", s);
  return 0;
}

 

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程宝库的更多内容!

1.运算符重载是一种形式的C++多态。2.重载运算符可以使代码看起来更加自然。 回顾类在正常构造类的时候,有些成员方法可以不用写出来,例如在这样一个表示时间的类中,拷贝构造函数只是浅拷贝,和系统默认的步骤是 ...