gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:49 26 4
gpt4 key购买 nike

是否可以在不使用 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 并且不定义类似的函数来做到这一点。可能吗?

最佳答案

再见。来吧?

对于我来说,我会用下面的方式声明这个函数

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

关于c - 反向(字符 * s,int 暗淡);在不使用 strlen 的情况下递归反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31501409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com