是否可以在不使用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 的情况下执行而不定义类似的功能。有可能吗?
答案 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