您的位置:首页 > 其它

实现字符串倒序的两种方法

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语言的基础学习会很有帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: