面試經常會遇到的題,C語言實現字符串逆序。如輸入“abcd”,輸出“dcba”。
最近自己整理了一下,下面代碼已經過測試。
#define Max 200
main()
{
char str[Max];
printf("請輸入字符串:");
gets(str);
int len=0;
char *strlen=str;
char *left=str;
char temp;
while(*strlen++)len++;
strlen-=2;//這裡很值得思考
while(left<strlen)
{
temp=*left;
*left++=*strlen;
*strlen--=temp;
}
printf("逆序後的字符串為:");
int i;
for(i=0;i<len;i++)
printf("%c",str[i]);
printf("\n");
system("pause");
}
下面是MS的C庫給出的代碼:
1.char * __cdecl strrev ( char * string )
2.{
3. char *start = string;
4. char *left = string;
5. char ch;
6. while (*string++) /* find end of string */
7. ;
8. string -= 2;
9. while (left < string)
10. {
11. ch = *left;
12. *left++ = *string;
13. *string-- = ch;
14. }
15. return(start);
16.}
MS給出的代碼比較簡潔,寫的比俺的要好!