C语言中所谓的字符串不过是字符数组,后跟一个0x00字符标识结尾,所以反转起来很容易,只要一个循环依次将第一个字符和最后一个字符交换,第二个字符和倒数第二个字符交换……如果最中间有两个字符(即需要反转的字符串长度为偶数),那就交换,如果最中间有一个字符(即需要反转的字符串长度为奇数),那就不需要碰它。还有就是最后一个用来标识字符串结尾的0x00字符不用动它。
代码如下:
void reversestr(char *str) { int i = 0; char temp; char *s1,*s2; while(*str != '\0') { i++;str++; } str -= sizeof(char)*i; s1 = str; s2 = str + sizeof(char)*i - 1; for(s1=str;s1<s2;s1++,s2--) { temp = *s1; *s1=*s2; *s2=*s1; } }