Amo*_*ngh 2 c string recursion
我已编写代码来反转c中的字符串......它工作正常,但我无法在main()
函数中返回反向字符串.
#include<stdio.h>
main()
{
char a[17]="abcdefg";
reverse(a);
printf("\n");
system("PAUSE");
}
int reverse(char *a)
{
if(*a!='\0')
{
reverse(a+1);
}
printf("%c",*a);
}
Run Code Online (Sandbox Code Playgroud)
它打印反转的字符串,但我想要反转的字符串main()
.我怎样才能做到这一点?
您需要修改字符串,即输入缓冲区reverse()
,而不是仅仅打印它。
递归地执行此操作似乎有点令人讨厌,但当然应该是可能的。
基本上,我猜打印变成了一项作业,如下所示:
小智 5
以下是使用递归反转字符串的一种方法!
#include <stdio.h>
#include <string.h>
void rev_str_recursive(char arr[], size_t iStart, size_t iLast)
{
if( iStart < iLast )
{
//swap
char temp = arr[iStart];
arr[iStart] = arr[iLast];
arr[iLast] = temp;
rev_str_recursive(arr, ++iStart, --iLast);
}
}
void main()
{
char cArray[] = {"A quick brown fox jumps over a lazy dog"};
rev_str_recursive(cArray, 0, strlen(cArray)-1);
}
Run Code Online (Sandbox Code Playgroud)