Chinaunix首页 | 论坛 | 博客
  • 博客访问: 813700
  • 博文数量: 157
  • 博客积分: 542
  • 博客等级: 中士
  • 技术积分: 1696
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-21 20:21
文章分类
文章存档

2017年(1)

2016年(2)

2015年(6)

2014年(42)

2013年(77)

2012年(19)

2011年(10)

分类: LINUX

2014-07-01 13:44:03

以前写过一个类似的实现,但是现在看了下,实现相对复杂,可读性也比较差,今天趁有时间就重新写一个:

形如字符串 “helloworld” 在顺时针旋转5个字节后就变成了“worldhello”:



  1. char *
  2. str_reverse(char *src, int k)
  3. {
  4.         char *tmp, *rever;

  5.         if (src == NULL || k == 0) {
  6.                 return src;
  7.         }

  8.         tmp = src;
  9.         while(*tmp != '\0') {
  10.                 tmp++;
  11.         }
  12.         tmp--;
  13.         rever = tmp;
  14.         while (k) {
  15.                 char c = *rever;

  16.                 while(rever != src){
  17.                         *rever = *(rever-1);
  18.                         rever --;
  19.                 }
  20.                 *rever = c;
  21.                 k--;
  22.                 rever = tmp;
  23.         }

  24.         return src;
  25. }

  26. int main(void)
  27. {
  28.         char str1[30]="helloworld";
  29.         str_reverse(str1, 5);
  30.         printf("reverse str1 = %s ,then %s\n", "helloworld", str1);
  31.         return 0;
  32. }

阅读(1134) | 评论(0) | 转发(0) |
0

上一篇:TCP 原理学习 1

下一篇:单向链表排序

给主人留下些什么吧!~~