uj5u.com熱心網友回復:
void EncryptEvenNumberWord(void)
{
char cArraySrc[] = "This is a string test: encrypt Even number word.";
char *pcSrc = cArraySrc;
char *pcDst = cArraySrc;
char cTemp = 0;
bool bResetStart = true;
int iIndexChar = 0;
int iIndexWordStart = 0;
int iIndexWordStop = 0;
int iIndexWord = 0;
int iWordLen = 0;
printf("src[%s]", cArraySrc);
while(0 != *pcSrc)
{
//單詞處理
if(!((('a' <= *pcSrc) && ('z' >= *pcSrc)) || (('A' <= *pcSrc) && ('Z' >= *pcSrc))))
{
bResetStart = true;
iWordLen = iIndexWordStop - iIndexWordStart;
//單詞字母個數不是偶數,不處理
if(0 != iWordLen % 2)
{
pcSrc ++;
iIndexChar ++;
iIndexWordStop ++;
continue;
}
//單次加密
//a-r o-z ;o-r之間的需如何處理?
//a-r 左移一位
if(((pcDst[iIndexWordStart] >= 'a') && (pcDst[iIndexWordStart] <= 'r'))
|| ((pcDst[iIndexWordStart] >= 'A') && (pcDst[iIndexWordStart] <= 'R')))
{
cTemp = pcDst[iIndexWordStart];
for(iIndexWord = iIndexWordStart; iIndexWord < iIndexWordStop; iIndexWord++)
{
pcDst[iIndexWord] = pcDst[iIndexWord + 1];
}
pcDst[iIndexWordStop - 1] = cTemp;
}
//s-z 右移一位
else if(((pcDst[iIndexWordStart] >= 's') && (pcDst[iIndexWordStart] <= 'z'))
|| ((pcDst[iIndexWordStart] >= 'S') && (pcDst[iIndexWordStart] <= 'Z')))
{
cTemp = pcDst[iIndexWordStop - 1];
for(iIndexWord = iIndexWordStop - 1; iIndexWord > iIndexWordStart; iIndexWord--)
{
pcDst[iIndexWord] = pcDst[iIndexWord - 1];
}
pcDst[iIndexWordStart] = cTemp;
}
}
else if((true == bResetStart) && ((('a' <= *pcSrc) && ('z' >= *pcSrc)) || (('A' <= *pcSrc) && ('Z' >= *pcSrc))))
{
bResetStart = false;
iIndexWordStart = iIndexChar;
}
pcSrc ++;
iIndexChar ++;
iIndexWordStop ++;
}
printf("dst[%s]", cArraySrc);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/53620.html
標籤:C語言
