交换函数写的没有问题。出问题而是在你填入交换函数的第二个参数。a是数组首元素地址,a+i是数组最后一个填入元素的下一个数据的地址。那么a+i这个时候指向的是字符串结束标志\0。所以你的代码实际上是把数组的第一个元素和最后一个元素\0进行了交换。puts准备输出你的字符串时,交换后第一个数据就将为\0,所有puts认为字符串读取结束,于是没有输出