将一个字符串str的内容颠倒过来,并输出。
输入描述:输入一个字符串,可以有空格;
输出描述:输出逆序的字符串。
1、使用指针方式:
#include <stdio.h>
#include <string.h>
int main()
{
char arr[10000] = { 0 };
gets(arr);
int len = strlen(arr);
char* left = arr;
char* right = arr + len - 1;
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
printf("%s\n", arr);
return 0;
}
或使用函数形式:
#include <stdio.h>
#include <string.h>
void Reverse(char* str)
{
char* left = str;
char* right = str + strlen(str) - 1;
while (left < right)
{
char temp = *left;
*left = *right;
*right = temp;
++left;
--right;
}
}
int main()
{
char arr[10000] = { 0 };
gets(arr);
Reverse(arr);
printf("%s\n", arr);
return 0;
}
//strlen
//nelrts
2、使用数组方式:
#include <stdio.h>
#include <string.h>
int main()
{
char arr[10000] = { 0 };
gets(arr);
int left = 0;
int right = strlen(arr) - 1;
while (left < right)
{
char tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
printf("%s\n", arr);
return 0;
}
//strlen
//nelrts
使用函数形式是:
#include <stdio.h>
#include <string.h>
void reverse(char arr[])
{
int left = 0;
int right = strlen(arr) - 1;
while (left < right)
{
char tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
int main()
{
char arr[10000] = { 0 };
gets(arr);
reverse(arr);
printf("%s\n", arr);
return 0;
}
混淆和易错点:用sizeof求字符串长度 ×
这里是求字符串长度,用strlen()函数,不是sizeof,sizeof是用来求变量所占空间大小的!
strlen()函数和sizeof的详细区别:
对数组的认识_Bug梨哥的博客-CSDN博客(1.2章节)
有关字符串逆序的更多解法:字符串逆序(递归实现)_Bug梨哥的博客-CSDN博客