//实现将一个字符串中的'\t'换成四个空格, '\t'个数不定。
#include "stdio.h"
#define TOTAL_LEN 1024
//是'\t'返回1
int IsCharTab(char chData)
{
return (('\t' == chData) ? 1 : 0);
}
//当str = '/'并且 str+1 = 't',即 "/t"
int IsStrTab(const char *pchData)
{
return ( ('\\'==*pchData && 't'==*(pchData+1)) ? 1 : 0);
}
void Fill4Space(char *pchData)
{
int i;
for (i= 0; i< 4; i++)
{
*pchData++ = ' ';
}
}
int RepalceCh(const char *pchSrc, char *pchDst)
{
if ((NULL == pchSrc) || (NULL == pchDst))
{
printf("pointer is NULL, error !/n");
return 0;
}
while (*pchSrc)
{
//是/t,直接将拷贝4个*到新内存去中
if (IsCharTab(*pchSrc))
{
Fill4Space(pchDst);
pchSrc++;
pchDst += 4; //添加了 4空格,指针向后移动 pointer+4
}
else
{
if (IsStrTab(pchSrc))
{
Fill4Star(pchDst);
pchSrc += 2; // 遇到"\\t", 第一个\为转意第二个\,所以pointer+2
pchDst += 4; // 添加 4 ' ', 移动 pointer+4
} else
{
*pchDst++ = *pchSrc++; // 其他正常情况
}
}
}
return 1;
}
int main(void)
{
char *pStr = "a\taaf\taa\taa\taaa\tjaaaa\\taaaa";
char achBuf[TOTAL_LEN + 1] = {0};
char *pDst = achBuf;
printf("原字符串: %s\n", pStr);
RepalceCh(pStr, achBuf);
printf("新字符串: %s\n", pDst);
return 0;
}
将一个字符串中的'\t'换成四个空格
最新推荐文章于 2023-05-03 17:12:09 发布