反向(char * s,int dim);在不使用strlen的情况下递归反转字符串

时间:2015-07-19 12:50:59

标签: c recursion

是否可以在不使用strlen的情况下使用递归和此定义来反转字符串?

void reverse(char *s, int dim);

我唯一能做的就是:

void reverse(char *s, int dim)
{
    int a = dim;
    int b = strlen(s) - 1 - dim;

    if ((a - b) <= 0)
        return;

    swap(s[a], s[b]);

    reverse(s, dim - 1);
}

但我想在不使用strlen 的情况下执行而不定义类似的功能。有可能吗?

1 个答案:

答案 0 :(得分:3)

侨。来吧?

至于我,我会按以下方式声明该功能

char * reverse( char *s, size_t n );

这是一个示范程序

#include <stdio.h>

char * reverse( char *s, size_t n )
{
    if ( !( n < 2 ) )
    {
        char c = s[0];
        s[0] = s[n-1];
        s[n-1] = c;
        reverse( s + 1, n - 2 );
    }

    return s;
}    


int main( void )
{
    char s[] = "Hello misiMe";

    puts( s );
    puts( reverse( s , sizeof( s ) - 1 ) );
}    

程序输出

Hello misiMe
eMisim olleH