本文参考该作者文章:
作者:Hawstein
出处:http://hawstein.com/posts/ctci-solutions-contents.html
声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。
Q:写代码翻转一个C风格的字符串。(C风格的意思是"abcd"需要用5个字符来表示,包含末尾的' '结束字符)
CODE:
1 #include<stdio.h> 2 #include<string.h> 3 void reverse1(char *s) 4 { 5 if(!s) 6 return; 7 char *p=s,*q=s; 8 while(*p) 9 p++; 10 p--; 11 while(q<p) 12 { 13 *q=*q^*p; 14 *p=*q^*p; 15 *q=*q^*p; 16 q++;p--; 17 } 18 } 19 void reverse2(char *s) 20 { 21 int j=strlen(s); 22 j--; 23 int i=0; 24 for(;i<j;i++,j--) 25 { 26 char t; 27 t=s[i]; 28 s[i]=s[j]; 29 s[j]=t; 30 } 31 } 32 int main() 33 { 34 char s[]="abcd"; 35 printf("%s ",s); 36 reverse2(s); 37 printf("%s ",s); 38 reverse1(s); 39 printf("%s ",s); 40 return 0; 41 }