Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1396131
  • 博文数量: 143
  • 博客积分: 10005
  • 博客等级: 上将
  • 技术积分: 1535
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-23 17:25
个人简介

淡泊明志 宁静致远

文章分类

全部博文(143)

文章存档

2011年(2)

2009年(1)

2007年(22)

2006年(118)

我的朋友

分类: C/C++

2006-11-25 19:00:26

C语言库函数源代码】

【本程序在Dev C++ 4.9.9.2 下编译通过】

/*

   Reverses the order of characters in the string.

   The terminating null character remains in place.

   把字符串的所有字符的顺序颠倒过来(不包括空字符NULL)。

   返回指向颠倒顺序后的字符串指针。

*/

char * my_strrev(char *str)

{

   char *right = str;

   char *left = str;

   char ch;

   while (*right)   right++;

   right--;

   while (left < right)

   {

       ch = *left;

        *left++ = *right;

        *right-- = ch;

   }

   return(str);

}

/*

   而我自己写的代码就略微显的有些啰里啰嗦,不简洁,

   更不是很太爽快。这个问题是值得好好想一下的了。

   下面就是我的垃圾代码

*/

char * my_StrReverse(char * ch)

{

   char tempch,* tch;

   int Len,i;

   tch = ch;

   Len = strlen(ch);

   for(i=0;i

   {

      tempch = *tch;

      *tch = *(tch + Len - 2*i - 1);

      *(tch+Len-2*i-1) = tempch;

      tch++;

   }

   return ch;

}

int main()

{

   char str[] ="ammana_babi";

   puts(my_strrev(str));

   puts(my_StrReverse(str));

   system("pause");

   return 0;

}

阅读(4120) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-12-18 11:37:09

我不觉的楼主的代码比第一个高效,他们的效率是一样的。

fera2009-09-29 10:26:29

楼主,虽然你自己写的代码ugly(Solution 2是美化后的),但是比第一个高效。 // Solution 1. char * ReverseStringSlow(char * aStr) { int len = strlen(aStr); char * ptemp = (char*) malloc (len); for (int i = len - 1, j = 0; i >= 0; --i, ++j) { ptemp[j] = aStr[i]; } strncpy(aStr, ptemp, len); free(ptemp); return aStr; } // Solution 2: better one char * ReverseStringFast(char * aStr) { int len = strlen(aStr); char temp = '\0'; for(int i = 0; i < len / 2; ++i)