打印
[牛人杂谈]

C语言实现字符串倒序

[复制链接]
707|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4
  5 int main()
  6 {
  7 char *src="abcdefghijk";
  8 int len=strlen(src);
  9 char *dest = (char *)malloc(len+1);
10
11 char *a=&src[len-1];
12 char *b=dest;
13
14 while(len-- != 0)
15 *b++ = *a--;
16 printf("%s\n",dest);
17 free(dest);
18 dest = NULL;
19 return 0;
20 }
运行情况:



char *dest = (char *)malloc(len+1);<===>

char *dest = NULL;

dest = (char *)malloc(len+1);//字符串以结尾,因此也给分配一个字节空间,malloc的类型为void *,因此强制转换为char *类型。


第11,12句:

定义一个字符指针a,指向字符串src的最后一个字符k,定义一个字符指针b,指向dest



第15句:

*b++ = * a--;<==>等价于下面三句:

1.*b = *a;

2. b++;

3. a--;



第16句:

想想为什么是返回dest,而不是b?



第17句:

防止内存泄露,在前面申请的内存空间现在都给他释放掉吧!



第18句:

释放掉内存后dest成了一个也指针,必须将其赋值为空。
沙发
gaoyang9992006| | 2016-8-11 17:22 | 只看该作者
逻辑的方法而已,这个一般不会用到。

使用特权

评论回复
板凳
neeringstu| | 2016-8-11 17:26 | 只看该作者
这种方法在单片机编程的时候一般就不会用到吧

使用特权

评论回复
地板
戈卫东| | 2016-8-11 18:35 | 只看该作者
还要用malloc这么可怕的东东。。。。。。。

使用特权

评论回复
5
643757107| | 2016-8-12 09:01 | 只看该作者
在Windows下开发的软件是EXE结尾,那么在Linux下开发的软件什么扩展名?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

197

主题

3267

帖子

7

粉丝