实现字符串倒序的两种方法
2018-01-31 20:09
585 查看
第一种
1 #include<stdio.h>
2 #include<string.h>
3
4 int main()
5 {
6 int i;
7 char a[20];
8
9 scanf("%s",a);
10
11 int length = strlen(a);
12
13 for(i = length - 1; i >= 0; i--)
14 {
15 printf("%c",a[i]);
16 }
17 printf("\n");
18
19 return 0;
20 }
这种方法就是简单的定义一个数组,输入字符串后,计算字符串长度,然后倒序输出,就完成了工作。
第二种
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 char *reverse(char *s)
6 {
7 int i;
8 char *tmp, *q;
9
10 char *ptr = (char *)malloc(sizeof(char)*20);
11 if (NULL == ptr)
12 {
13 perror("malloc");
14 }
15 q = ptr;
16
17 int length = strlen(s);
18 tmp = s + length -1;
19
20 for(i = 0; i < length; i++ )
21 {
22 *ptr++ = *tmp--;
23 }
24 strcpy(s,q);
25 free(q);
26 return s;
27 }
28
29 int main()
30 {
31 char *str;
32 char *ptr;
33 str = (char *)malloc(sizeof(char)*20);
34 if(NULL == str)
35 {
36 perror("malloc");
37 }
38
39 scanf("%s",str);
40 ptr = reverse(str);
41 printf("%s\n",ptr);
42
43 free(str);
44 return 0;
45 }
这种方法就比较高级了,包含了很多东西,有指针,有调用函数,有malloc分配内存,虽然复杂,但是正因为包含的东西多,才更值得c语言初学者去写,如果能够完全理解这个程序,对c语言的基础学习会很有帮助。
1 #include<stdio.h>
2 #include<string.h>
3
4 int main()
5 {
6 int i;
7 char a[20];
8
9 scanf("%s",a);
10
11 int length = strlen(a);
12
13 for(i = length - 1; i >= 0; i--)
14 {
15 printf("%c",a[i]);
16 }
17 printf("\n");
18
19 return 0;
20 }
这种方法就是简单的定义一个数组,输入字符串后,计算字符串长度,然后倒序输出,就完成了工作。
第二种
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 char *reverse(char *s)
6 {
7 int i;
8 char *tmp, *q;
9
10 char *ptr = (char *)malloc(sizeof(char)*20);
11 if (NULL == ptr)
12 {
13 perror("malloc");
14 }
15 q = ptr;
16
17 int length = strlen(s);
18 tmp = s + length -1;
19
20 for(i = 0; i < length; i++ )
21 {
22 *ptr++ = *tmp--;
23 }
24 strcpy(s,q);
25 free(q);
26 return s;
27 }
28
29 int main()
30 {
31 char *str;
32 char *ptr;
33 str = (char *)malloc(sizeof(char)*20);
34 if(NULL == str)
35 {
36 perror("malloc");
37 }
38
39 scanf("%s",str);
40 ptr = reverse(str);
41 printf("%s\n",ptr);
42
43 free(str);
44 return 0;
45 }
这种方法就比较高级了,包含了很多东西,有指针,有调用函数,有malloc分配内存,虽然复杂,但是正因为包含的东西多,才更值得c语言初学者去写,如果能够完全理解这个程序,对c语言的基础学习会很有帮助。
相关文章推荐
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。
- Sql字符串分组Split函数的两种实现方法
- C#实现数字字符串左补齐0的两种方法
- Perl从文件中读取字符串的两种实现方法
- Sql字符串分组Split函数的两种实现方法
- 两种方法实现了左旋字符串
- Sql字符串分组Split函数的两种实现方法(转)
- 请借助Array内置对象的相关方法,实现字符串倒序排列
- C++实现字符串替换的两种方法
- C#实现数字字符串左补齐0的两种方法
- C++实现字符串替换的两种方法
- 实现数组字符串翻转的两种方法
- 组合(从长度为n的字符串中取m个字符)---java两种实现方法
- C语言两种方法实现字符串反转
- js去除重复字符串两种实现方法
- Java实现字符串倒序输出的几种方法
- Sql字符串分组Split函数的两种实现方法
- Java实现字符串倒序输出的几种方法
- 字符串按照单词反序(增加额外空间和不增加额外空间两种实现方法)
- Java实现字符串倒序输出的几种方法