淡泊明志 宁静致远
分类: C/C++
2006-11-25 19:00:26
【C语言库函数源代码】
【本程序在Dev C++ 4.9.9.2 下编译通过】
/*
Reverses the order of characters in the
string.
The terminating null character remains in
place.
把字符串的所有字符的顺序颠倒过来(不包括空字符NULL)。
返回指向颠倒顺序后的字符串指针。
*/
char * my_strrev(char *str)
{
char *right =
str;
char *left =
str;
char ch;
while
(*right) right++;
right--;
while (left
< right)
{
ch
= *left;
*left++ = *right;
*right-- = ch;
}
return(str);
}
/*
而我自己写的代码就略微显的有些啰里啰嗦,不简洁,
更不是很太爽快。这个问题是值得好好想一下的了。
下面就是我的垃圾代码
*/
char * my_StrReverse(char *
ch)
{
char tempch,*
tch;
int Len,i;
tch = ch;
Len = strlen(ch);
for(i=0;i
{
tempch = *tch;
*tch = *(tch + Len - 2*i - 1);
*(tch+Len-2*i-1) = tempch;
tch++;
}
return ch;
}
int main()
{
char str[]
="ammana_babi";
puts(my_strrev(str));
puts(my_StrReverse(str));
system("pause");
return 0;
}
fera2009-09-29 10:26:29
楼主,虽然你自己写的代码ugly(Solution 2是美化后的),但是比第一个高效。 // Solution 1. char * ReverseStringSlow(char * aStr) { int len = strlen(aStr); char * ptemp = (char*) malloc (len); for (int i = len - 1, j = 0; i >= 0; --i, ++j) { ptemp[j] = aStr[i]; } strncpy(aStr, ptemp, len); free(ptemp); return aStr; } // Solution 2: better one char * ReverseStringFast(char * aStr) { int len = strlen(aStr); char temp = '\0'; for(int i = 0; i < len / 2; ++i)