Write a function reverse_string(char * string) (recursive implementation)
implementation: reverse the characters in the parameter string.
Requirement: String manipulation functions in
the
Method 1: Recursion
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int my_strlen(const char *p)
{
return assert(p), !(*p) ? 0 : (1 + my_strlen(p + 1));
}
void reverse_string(char *p)
{
if (*p == '\0')
;
else
{
char tmp = p[0];
int len = my_strlen(p);
p[0] = p[len - 1];
p[len - 1] = '\0';
reverse_string(p + 1);
p[len - 1] = tmp;
}
}
int main()
{
char arr[] = "abcdef";
reverse_string(arr);
printf("arr=%s \n",arr);
system("pause");
return 0;
}
Method 2: Non-recursive
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void swap(char *left, char *right)
{
assert(left != NULL);
assert(right != NULL);
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int my_strlen(const char *p)
{
return assert(p), !(*p) ? 0 : (1 + my_strlen(p + 1));
}
char *reverse_string(char * string)
{
char *p = string;
int len = my_strlen(string);
swap(string, string + len - 1);
return p;
}
int main()
{
char arr[] = "abcdef";
printf("%s\n", reverse_string(arr));
system("pause");
return 0;
}