C语言字符串逆转函数
发布网友
发布时间:2022-06-01 01:41
我来回答
共2个回答
热心网友
时间:2023-11-08 23:50
只需要将字符数组的前后数据进行交换就行了。
#include <stdio.h>
#include <string.h>
char* reverse(char *x)
{
int i, tem, len = strlen(x);
int n = len / 2;
for (i = 0; i <= n; i++) // 前后交换数据
{
tem = x[i];
x[i] = x[len - 1 - i];
x[len - 1 - i] = tem;
}
return x;
}
int main()
{
char p[] = "abcdefghijk";
printf("relust = %s\n", reverse(p));
return 0;
}
热心网友
时间:2023-11-08 23:51
你的逻辑是对的,转置函数也是对的。就是有三个小问题:
#include <stdio.h>
int main(){
void nizhuan(char []);
int i,j,n;
char a[100]={0};
printf("请输入字符串,以@结束:");
/********输入有问题:你要判断之前输入的是不是@,而不是判断将要输入的是不是@*******/
scanf("%c",&a[0]);
for(i=1;a[i-1]!='@';i++)
scanf("%c",&a[i]);
/********输入*******/
nizhuan(a);
printf("%s",a); /* 缺少输出 */
}
void nizhuan(char a[]){
int i,j,n;
char t;
for(i=0;;i++)
if(a[i]=='@') /* 等号错误 */
break;
i--;
n=(i+1)/2;
for(j=0;j<n;j++,i--)
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}追问非常感谢!!那么能否讲解一下传址调用的格式??有些迷茫。。。
追答你这个就属于地址调用的一种,你传的是字符串,其实传进去就是字符指针。
所谓地址调用,就是这个样子:
void SetA(int* pa)
{
*pa=5; //这边pa是一个指针,要使用pa指向的值或者要改变pa指向的值就要用*pa;
pa[0]=5; //这一句和上一句是等价的。
}
int main()
{
int a=4;
SetA(&a); //传进去的是你想改变的变量的地址,或者是数组的某一个指针。
printf("%d\n",a); // a=5
}