http://blog.csdn.net/jianxiong8814/article/details/1595110
2007
下面是使用這種方法具體代碼:
/************************************************************************/
// 函數(shù)名稱: Ustrlen
// 輸入?yún)?shù): strSource,待求長度字符串;
// 輸出參數(shù): int,字符串的長度。
// 描 述: 通過判斷字符'/0'來得到字符串的長度
/************************************************************************/
int Ustrlen(const char *strSource)
{
// 聲明變量
int iLength(0);
// 遍歷字符串,查找字符'/0'
while(*strSource++ != '/0')
{
++iLength;
}
// 返回字符串的長度
return iLength;
}
/************************************************************************/
// 函數(shù)名稱: _ReversalChar
// 輸入?yún)?shù): strSouce,待反轉(zhuǎn)字符串;iStart,旋轉(zhuǎn)字符串開始位置;iEnd,旋轉(zhuǎn)字符串結(jié)束位置
// 輸出參數(shù): char*,反轉(zhuǎn)后字符串的指針;
// 描 述: 反轉(zhuǎn)iStart到字符串iEnd之間的字符串
/************************************************************************/
char* _ReversalChar(char *strSouce,int iStart,int iEnd)
{
// 反轉(zhuǎn)字符串
for(;iEnd > iStart; ++iStart,--iEnd)
{
char ch;
ch = strSouce[iStart];
strSouce[iStart] = strSouce[iEnd];
strSouce[iEnd] = ch;
}
// 返回字符串指針
return strSouce;
}
/************************************************************************/
// 函數(shù)名稱: ReversalChar
// 輸入?yún)?shù): strSource,待反轉(zhuǎn)字符串
// 輸出參數(shù): char*,反轉(zhuǎn)字符串后的指針
// 描 述: 按單詞反轉(zhuǎn)字符串
/************************************************************************/
char * ReversalChar(char *strSouce)
{
// 獲取字符串的長度
int iLength = Ustrlen(strSouce);
// 反轉(zhuǎn)整個字符串
_ReversalChar(strSouce,0,iLength-1);
// 聲明變量(單詞的開始以及結(jié)束默認(rèn)從0開始)
int iStart(0),iEnd(0);
// 查找單詞
// 像上面討論的查找單詞的情況,我們只需要修改這部分,就可以實現(xiàn)對不
// 同格式類型單詞進(jìn)行處理,為了更好的通用性,其實最好把查找單詞這部分
// 作為單獨一個函數(shù),或者一個類來處理
for(int i = 0; i < iLength; ++i)
{
// 查找空格分割符號
if(strSouce[i] == ' ')
{
// 找到一個單詞
iEnd = i-1;
// 對于只有一個字符的單詞比如說(I)沒有必要反轉(zhuǎn)
if(iStart < iEnd)
{
// 反轉(zhuǎn)單詞
_ReversalChar(strSouce,iStart,iEnd);
}
// 記錄下一個單詞的開始位置
iStart = i+1;
}
// 特殊處理幾種常見標(biāo)點符號
else if(strSouce[i] == '!' || strSouce[i] == ',' || strSouce[i] == '.')
{
iStart = i+1;
}
}
// 返回反轉(zhuǎn)后的字符串
return strSouce;
}