C语言实现字符串逆序输出

时间:2023-01-03 07:26:23
 
方法一:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Reverse(char str[]);
int main()
{
char str[];
printf("Input a string:");
gets(str);
Reverse(str);
printf("Inversed results:%s\n",str);
}
void Reverse(char str[]){
int n=strlen(str);
int i;
char temp;
for(i=;i<(n/);i++){
temp=str[i];
str[i]=str[n-i-];
str[n-i-]=temp;
}
}
//思路:通过将str数组的第1个字符和第n个字符交换位置,第二个和第n-1个交换…实现该功能

方法二:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Reverse(char str[], char ptr[]);
int main()
{
char str[];
char ptr[];
printf("Input a string:");
gets(str);
Reverse(str,ptr);
printf("Inversed results:%s\n",ptr);
}
void Reverse(char str[], char ptr[]){
int n=strlen(str);
int i; for(i=;i<=n;i++){
ptr[i]=str[n-i-];
}
ptr[i-]='\0';
}
//思路:通过倒着遍历数组str,并把遍历结果存入ptr从而实现改功能

另外有一种不用新变量的方法:

char *reverse(char *str)
{
if(str==nullptr)
return nullptr;
int len=strlen(str);
int i=;
while(i<len-i-){
str[i]=str[i]^str[len-i-];
str[len-i-]=str[i]^str[len-i-];
str[i]=str[i]^str[len-i-];
i++;
};
return str; }

参考:https://blog.csdn.net/m0_37888031/article/details/77896594