CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

求字符串逆序函数,串内是中英文字符混合,请各位前辈指点。

楼主anranxon(jack)2005-11-07 16:37:03 在 C/C++ / C++ 语言 提问

如题,要求能写出一函数或程序,实现如下功能:  
  源字符串为:   "This   是一个   C++程序";  
  经过相关代码逆序后成为:"序程++C   个一是   sihT";  
  要求,类型自定义,能有屏幕输出,请前辈们指点,如能写出完整的程,深为感谢 问题点数:40、回复次数:10Top

1 楼happyparrot(快乐鹦鹉)回复于 2005-11-07 16:55:24 得分 0

遍历。如果字符大于0x80,则为中文,将连续的两个字符一起放到新字符串的末尾Top

2 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2005-11-07 16:59:12 得分 10

#include   "stdio.h"  
  #include   "stdlib.h"  
  #include   "string.h"  
   
  char   *   Inverse(const   char   *   pSrc)  
  {  
  int   len   =   strlen(pSrc);  
  if   (   len   )   {  
  char   *   pTarget   =   new   char[len];  
  unsigned   char   *   p1   =   (unsigned   char   *)pSrc;  
  char   *   p2   =   pTarget   +   len   -   1;  
  for   (   int   i=0;   i<len;   i++)  
  {  
  if   (   *p1   <=0x80   )  
  *p2--   =   *p1++;  
  else   {  
  *p2   --   =   p1[1];  
  *p2   --   =   *p1;  
  p1   +=   2;  
  i++;    
  }  
  }  
  return   pTarget;  
  }   else  
  return   NULL;  
  };  
   
  int   main()  
  {  
  char   *   pSrc   =   "This   是一个   C++程序";  
  char   *   pT   =   Inverse(pSrc);  
  printf("%s",   pT);  
  delete   pT;  
  return   0;  
  };Top

3 楼anranxon(jack)回复于 2005-11-07 17:00:40 得分 0

一个汉字字符是占两个字节还是四个?为什么:sizeof('汉')=4   而   sizeof("汉")=3Top

4 楼anranxon(jack)回复于 2005-11-07 17:02:35 得分 0

谢谢,上面的程序运行得很好  
  Top

5 楼yelling(Ray(←☆→射手))回复于 2005-11-07 17:19:38 得分 0

to   anranxon(jack)    
  两个高位为1的字节Top

6 楼gumbour(gub不是bug)回复于 2005-11-07 17:59:17 得分 10

sizeof('汉')=4   中的'汉'是一个整数,32位的C编译器里面把''之内字符数2-4个的数据处理为4字节整数  
  sizeof("汉")=3   中的汉是以\0结尾字符串,长度为strlen("汉")+1  
  Top

7 楼Kid4you(Kid4you)回复于 2005-11-07 18:13:07 得分 10

#include   <iostream.h>  
   
   
  /*     逆序输出字符串(带中文),递归方式   */  
  void   reverse(char   *str)  
  {  
  if   (   *str   ==   '\0'   )   return;  
  if   (   *str   <   0   )    
  {  
  reverse(   str   +   2   );  
  cout<<*str<<(*(str+1));  
  }  
  else  
  {  
  reverse(   str   +   1   );  
  cout   <<   *str;  
  }  
  }  
   
  void   main()  
  {  
                    char   str[]   =   "AZaz冬天";  
  reverse(str);  
  }  
  }  
  Top

8 楼tufaqing()回复于 2005-11-07 18:21:19 得分 0

可以先变成wchar(A2W)逆转,再变成char(W2A)Top

9 楼codearts(代码艺术)回复于 2005-11-07 19:22:22 得分 10

俺调试了一个用wchar_t的程序  
   
  #include   <stdio.h>  
  //#include   <tchar.h>  
  #include   <iostream>  
  #include   <io.h>  
  #include   <fcntl.h>  
   
   
  using   namespace   std;  
   
   
  int   _tmain(int   argc,   _TCHAR*   argv[])  
  {  
  wchar_t   wStr[]   =   L"This   是一个   C++程序";  
   
  _setmode(   _fileno(   stdout   ),   _O_WTEXT);  
  wprintf_s(L"%s\n",   wStr);  
   
   
  wchar_t*   pLast   =   wStr;  
  while   (*pLast++)   NULL;  
  pLast   -=   2;  
   
  wchar_t*   pFirst   =   wStr;  
  wchar_t   chTemp;  
  while   (pFirst   <   pLast)  
  {  
  chTemp   =   *pFirst;  
  *pFirst++   =   *pLast;  
  *pLast--   =   chTemp;  
  }  
   
  wprintf_s(L"%s",   wStr);  
   
  getchar();  
   
  return   0;  
  }  
  Top

10 楼anranxon(jack)回复于 2005-11-08 09:28:55 得分 0

嗯,多谢谢几位前辈指点,结了Top

相关问题

  • VFP6中有没有字符串逆序函数??
  • 字符串函数?
  • 字符串函数
  • 一个html字符串截取的函数,请大家指点,100分
  • 自写一个函数实现字符串的strcat()函数功能,请各位指点……谢谢!!
  • ATL & ANSI字符串函数
  • 字符串比较函数
  • 字符串处理函数
  • 字符串函数问题
  • 字符串匹配函数?

关键词

  • c++
  • 字符
  • 逆序
  • 字符串
  • wstr
  • plast
  • psrc
  • wchar
  • 程序
  • len

得分解答快速导航

  • 帖主:anranxon
  • happy__888
  • gumbour
  • Kid4you
  • codearts

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo