1、未将原来的字符串进行保存 ,直接输出反转字符串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* Reverse(char* str, int len);
void main()
{
int len;
char str[] = "ABCD1234efgh";
len = strlen(str);
Reverse(str, len);
printf("%s", str);
return ;
}
char* Reverse(char* str, int len)
{
if (str == nullptr || len <= 0)
return nullptr;
char *start = str;
char *end = str + len - 1 ;
char ch;
while (start < end)
{
ch = *start;
*start++ = *end;
*end-- = ch;
}
return str;
}
2、保存原有的字符串,并将反转字符串保存于输出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* Reverse(char* str, int len);
void main()
{
int len;
char str[] = "ABCD1234efgh";
len = strlen(str);
char *q = Reverse(str, len);
free(q);
return ;
}
char* Reverse(char* str, int len)
{
if (str == nullptr || len <= 0)
return nullptr;
int length = len;
char* start = str;
char* dest = (char*)malloc(sizeof(char)*(len + 1));
char* end = dest + len - 1;
while (len > 0)
{
*end-- = *start++;
len--;
}
dest[length] = '\0';
printf("%s%s\n%s%s\n","源字符串: ",str,"反转字符串:", dest);
return dest;
}