// 写一个函数,实现将一个字符串中的'/t'替换成四个'*', '/t'个数不定。如char *p="ht/thdsf/t/ttt/tfds dfsw/t ew/t",替换后p="ht****hdsf********tt****fds dfsw****

// 写一个函数,实现将一个字符串中的'/t'替换成四个'*', '/t'个数不定。 // 如char *p="ht/thdsf/t/ttt/tfds dfsw/t ew/t",替换后p="ht****hdsf********tt****fds dfsw**** ew****"。 #include "stdio.h" #define TOTAL_BUF_LEN 1024 // '/t' int IsCharTab(char chData) { return (('/t' == chData) ? 1 : 0); } // if str = '/' && str+1 = 't', so it "/t" int IsStrTab(const char *pchData) { return ( ('//'==*pchData && 't'==*(pchData+1)) ? 1 : 0); } void Fill4Star(char *pchData) { int nIdx; for (nIdx = 0; nIdx < 4; nIdx++) { *pchData++ = '*'; } } int RepalceCh(const char *pchSrc, char *pchDst) { if ((NULL == pchSrc) || (NULL == pchDst)) { printf("pointer is NULL, error !/n"); return 0; } while (*pchSrc) { if (IsCharTab(*pchSrc)) // 是/t,直接将拷贝4个*到新内存去中 { Fill4Star(pchDst); pchSrc++; pchDst += 4; // for 4 '*', so pointer+4 } else { if (IsStrTab(pchSrc)) { Fill4Star(pchDst); pchSrc += 2; // here is a string "/t", so pointer+2 pchDst += 4; // for 4 '*', so pointer+4 } else { *pchDst++ = *pchSrc++; // copy data from src to dst } } } return 1; } int main(void) { char *pStr = "a/tdaf//tjl/tks/tadf/tjasdj//tfa"; char achBuf[TOTAL_BUF_LEN + 1] = {0}; char *pDst = achBuf; printf("src data is: %s/n", pStr); RepalceCh(pStr, achBuf); printf("dst data is: %s/n", pDst); return 0; }

你可能感兴趣的:(String,null,DST)