我试过了!VC++
%s错误,%c,为e
你如果用sizeof(str)可能结果是10.但是strlen是按照' '作为结束标志的,所以计算肯定是7.结果只会是e.
当然必须printf("%cn",*p);因为p是字符.
p=str+strlen(str)/2+1;
strlen(str)/2+1=4,p就指向了str[4]=‘e’.p-2指向p[2]='c'.
然后在f函数中递归调用
首先:e,c互换.str变成了:abedcfg,然后s++到d,t--指向d,
不变,再一次s++到c,t--指向e,
交换变成abcdefg,再一次s++到f,t--指向b,
交换变成afcdebg,再一次s++到g,t--指向a,
交换变成gbcdefa,再一次s++到' ',t--指向前一个空间,
*s相当于==0,函数退出
所以最后,str变成了gbcdefa