• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: C/C++
  • 标签: 递归  中文字  

资源简介

该文档是反转字符串的,很多资源只是反转英文字符串,该文档包括可以反转中文的,并且有递归和非递归的方法。仅仅只是一个cpp文件,只要新建一个新的空工程,直接加载该cpp就可以运行使用了。

资源截图

代码片段和文件信息

#include 
#include 
//#include 
//#include 
#include 
#include 
using namespace std;
#define DEBUG 1
// char* Reverse(char* s)
// {
//  //将q指向字符串最后一个字符
//  char* q = s ;
//  while( *q++ ) ;
//  q -= 2 ; 
// 
//  //分配空间,存储逆序后的字符串。
//  // new是分配内存
//  // char是按char类型来分配和使用内存
//  // 中括号是内存的多少,则能放多少个char。
//  // sizeof(char)算出一个char占内存中的多少个字节
//  // (q-s+2)即是算出需要多少个char。
//  // s是字符的开始地址,q是最后一个字符的地址,则字符的长度是q-s+1
//  // 由于C语言还需要一个字符来存放结束符‘\0‘(它也是一个char),所以需要的内存必须能放q-s+1+1=q-s+2个char。
//  char* p = new char[sizeof(char) * (q - s + 2)] ; 
//  char* r = p ;
// 
//  // 逆序存储
//  while(q >= s)
//  {
//  //取q的地址值赋值给p地址值,然后q减1的值赋值给P+1的值
//  *p++ = *q-- ;
//  }
//  *p = ‘\0‘ ;
//  printf(“输出字符%s“r); 
//  return r ;
// }
// 
// int main()
// {
//  char* input = new char[100];
//  printf(“Please input string:“);
//  scanf(“%s“input);
//  printf(“you input string is %s\n“input);
//  Reverse(input);
//  return 1;
// }





// 不是用递归完成的
void Reverse(char* m_data)//字符串反转,有中文时也不会出错
{
char e(0x80);
size_t ij;
size_t length(strlen(m_data));
char* str=new char[length+1];
for(i=0j=length-1;i {
if(m_data[i]&e)//和
{
str[j-1]=m_data[i];
str[j--]=m_data[++i];
}
else//1
{
str[j]=m_data[i];
}
}

评论

共有 条评论