// 剔除冗余的空格字符(第一个和最后一个字符不能为空格字符,中间空格不能有连续两个存在
int RemoveUnnecessarySpaceBar(char *strSource)
{
if (strSource == NULL)
return -99;
int nLen = strlen(strSource);
char *pStringPtr = new char[nLen + 1];
char *pStringDeal = pstringPtr; // 保存原始指针地址用于 delete
strcpy(pStringPtr, strSource);
// 剔除首部空格
for (int i = 0; i < nLen; ++i)
{
if (*pStringDeal == ' ')
++pStringDeal;
else
break;
}
// 剔除尾部空格
nLen = strlen(pStringDeal);
for (int i = nLen - 1; i >= 0; --i)
{
if (pStringDeal[i] = ' ')
pStringDeal[i] = '\0';
else
break;
}
// 剔除中间多余空格
// 条件:j <= nLen 的目的是把最后一个'\0'也拷贝过来
// nSpaceCount: 连续空格数
nLen = strlen(pStringDeal);
for (int i = 0, j = 1, nSpaceCount = 0; j <= nLen; ++j)
{
if (pStringDeal[j] == ' ')
{
if (++nSpaceCount < 2)
++i;
}
else
{
nSpaceCount = 0;
++i;
}
if (i != j)
pStringDeal[i] = pStringDeal[j];
}
// 处理好的字符串,重新写入到原地址
strcpy(strSource, pStringDeal);
delete [] pStringPtr, pStringPtr = NULL;
return 0;
}
剔除冗余空格字符
最新推荐文章于 2021-04-24 23:19:59 发布