逆序
#include<stdio.h>
void f(char *p){
int i=0;
while(*(p+i)!='\0'){
i++;
}
int a=0;
int x=i-1;
char t;
while(x>i/2){
t=*(p+a);
*(p+a)=*(p+i-a);
*(p+i-a)=t;
a++;
x--;
}
}
int main(){
char st[20];
scanf("%s",st);
f(st);
printf("%s",st);
}
首先,你想逆序,那要两两交换啊,两两交换会吧,想要交换a和b,你需要引入一个c
c=a;
a=b;
b=c;
这样才是交换,否则你是用后半截的值给前半截赋值,最后变成一个回文
其次,i的最后位置是\0,你把\0给赋值到第一个字符了,那不就成了个空字符串吗,x=i-1才对呀
改成这样试试
*(p+a) = *(p+i-a-1)
scanf的第二个参数,缺少了&符号。