C语言,求一个字符串的逆序

原创 2006年05月29日 00:15:00

char *strreverse(char *dest,char *src)//反转字符串,have tested
{
 /*
 把字符串的两头进行掉换,这样即省资源又降低了复杂度,还有一问题,可能有dest==src
 */
 /*
 在写此程序时考虑的问题:(我写程序时总考虑一些问题,列举出多不可行的办法
 所以我写程序的时候很犹豫)

 如果函数入口的变量为(char **dest,char *src);那么可以为他直接分配一个空间
 哦,明白,这违背了多占用了空间的原则

 如果还是用原来接口即:(char *dest,char *src)那么,就分两种情况考虑:
 第一,当dest==src也就说是输入等输出的时候
 第二,就是当dest的空间大小不够了,其实按照strcpy()这函数来讲,这问题不应
 是在这个程序里边考虑的问题,因为dest的空间在调用此函数之前必须保证足够,
 要不会出现问题.那我这程序也在这种保证下编写的,当然,会进行检查的
 */
 int srclen=strlen(src);
 int destlen=strlen(dest);
 char c;
 if(destlen<srclen)
  return NULL;
 if (dest==src)//是以自己为输入输出的,这种方式就用两边对换的方法
 {
  destlen=destlen/2;
  while (srclen>destlen)
  {
   c=*src;
   *src=*(dest+srclen-1);
   *(dest+srclen-1)=c;
   src++;
   srclen--;
  }
 }
 else//输入和输出不相等,那么要进行所有的对换啊
 {
  while (srclen>0)
  {
   *dest++=*(src+srclen-1);
   srclen--;
  }
  *dest=0;//把/0给dest
 }
 return src;
}

 

//--------------------------后记-------------

如果输入同时也为输出的时候,请要搞清楚src和dest是不是常量,如果是的话,运行的时候会出错误,而编译的时候没什么问题例如你这样调用本函数:

int main(viod)

{

char * str="abcdefg";

strreverse(str,str);//这样是错误的,因为str为常量,不能做为输出的

}

//当然,解决上述问题,只需用改一个输出(char *dest)类型就行了,把它改成(char **str)然后再里边为动态的分配一个栈,可是我写这个算法的时候是要求在空间和时间上都要有优势,所以我并没有那么干,这样也带来了一定的不协调,呵呵

c语言实现字符串的逆序输出

#include #include main() { int i,j,t,n; char a[10]; printf("请输入字符串:"); gets(a); n=strlen(a...
  • qq_35038153
  • qq_35038153
  • 2017年04月18日 12:29
  • 8583

c语言中求一个字符串的逆序

对求任意字符串逆序的c程序
  • baidu_35534327
  • baidu_35534327
  • 2016年09月09日 20:58
  • 2571

C语言-字符串逆序

作者:zdd 出处:http://www.cnblogs.com/graphics/字符串面试题(一)字符串逆序 几点说明 所有题目全部来自网络,书籍,或者我自己的面试经历,本人只是负责搜集整理。...
  • qiuxuewei2012
  • qiuxuewei2012
  • 2015年07月24日 20:01
  • 2202

用不同的方法实现字符串的逆序输出(C语言实现)

用不同的方法实现字符串的逆序输出(C语言实现) 今天去面试遇到面试题如下: 请将字符串"123456",逆序输出? 当时我使用是指针,以下我将后来我想到的方法,实现如下: #include #in...
  • gaoxin12345679
  • gaoxin12345679
  • 2014年02月20日 22:22
  • 4043

C语言实现字符串倒序输出

  • 2012年01月25日 20:22
  • 466B
  • 下载

用c语言实现字符串倒序的几种情况

第一种:hello , everyone ! I am Chineses !                 olleh , enoyreve ! I ma sesenihC ! 两种方法分别...
  • HAHAandHEHE
  • HAHAandHEHE
  • 2017年11月29日 18:44
  • 105

c语言逆序输出字符串

  • 2015年05月20日 09:57
  • 154B
  • 下载

C语言练习——逆序的三位数

逆序的三位数 题目内容: 程序每次读入一个正三位数,然后输出逆序的数字。注意,当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。 输入格式: 每个测试是一个3位的...
  • iamyococo
  • iamyococo
  • 2014年12月01日 23:22
  • 6993

求数组逆序对数

题目: 对于一个元素个数为n的数组A,若*A[i] > A[j],且0 解析: 对于这一个题目,最容易想到的方法即顺序扫描整个数组。没扫描到一个元素,则将该元素与其后面的所有元素进行比较,若...
  • acaiwlj
  • acaiwlj
  • 2013年09月03日 16:56
  • 1385

C语言,求一个字符串的逆序

char *strreverse(char *dest,char *src)//反转字符串,have tested{ /* 把字符串的两头进行掉换,这样即省资源又降低了复杂度,还有一问题,可能有des...
  • longxin007
  • longxin007
  • 2006年05月29日 00:15
  • 4594
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言,求一个字符串的逆序
举报原因:
原因补充:

(最多只允许输入30个字)