字符串逆序-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); 后面的文章会解释,也会用到它。

你可能感兴趣的:(字符串)