字符串逆序-c语言

给定一个含有n个元素的字符串,实现逆序。

 

这是个很基础的问题,实现方式也是很常见的c语言思路。虽然简单,但是仍然记录下来。

[期望]

比如char str[] = "abcdefg";

逆序后为:"gfedcba";

[思路]
分别从字符串的头和尾部向中间进发,依次交换头尾的值,直到在中间相遇。


代码:

#include <stdio.h>
#include <string.h>

void print_str(char *str)
{
    int i,len;
    if (str == NULL) {
        return;
    }
    len = strlen(str);
    for(i=0; i<len; i++) {
        printf("%c",str[i]);
    }
    printf("\n");
}

void str_reverse(char *str, int left, int right)
{
    char tmp;
    while(left < right) {
        tmp = str[left];
        str[left++] = str[right];
        str[right--] = tmp;
    }   
}

void str_reverse_test()
{
    char str[] = "abcdefg";
    str_reverse_1(str, 0, strlen(str)-1);
    print_str(str);
}

void main()
{
    str_reverse_test();
}
View Code

 


至于函数原型为什么不定义成void str_rev(char *str);或者void str_rev(char *str, int len);,
而是定义成void str_rev(char *str, int left, int right); 后面的文章会解释,也会用到它。

posted @ 2014-03-22 23:38  onemuji  阅读(1865)  评论(0编辑  收藏  举报