要想实现此代码 有指针和数组的两种方法
数组的方法
#include<stdio.h>
#include<string.h>
int main()//
{
char arr1[10000] = { 0 };
scanf("%[^\n]", arr1);//[^\n]读取到换行结束
int len = strlen(arr1);
int left = 0;
int right = len - 1;
while (left < right)
{
char tmp = arr1[left];//*(arr+i) 编译器的实现形式 指针是变量,存放地址的大小是4/8 32--4 64--8
arr1[left] = arr1[right];
arr1[right] = tmp;
left++;
right--;
}
printf("%s\n", arr1);
return 0;
}
#include<stdio.h>
void reverse(char* arr)
{
char* left = arr;//left->arr left指针变量 指向数组arr的首地址 char*代表类型是char
char* right = arr + strlen(arr) - 1;//strlen()-是计算字符串长度的函数;长度-1为数组的末尾号;字符串最后一个元素赋值给right
while (left < right)
{
char tmp = *left;
*left++ = *right--;\先使用后运算 先*left=*right 在left=left+1=right=right-1;
}
}
int main()
{
char arr[1000] = { 0 };
gets(arr);//gets()是输入函数,专门对字符串数组进行输入 遇到字符串不结束 arr数组名
//scanf("%s",arr); scanf在输入时遇到字符串就结束了 所以不能使用
printf("before:%s\n", arr);
reverse(arr);//字符串逆置
printf("after:%s\n", arr);//字符串格式%s
return 0;
}
运行结果