今天看到一道面试题,让将已知字符串中的“/t”字符替换为四个空格,随手整理了一下(为查看方便此处以“_”代替空格): /******************************************************* * * 参数说明:char* pstr => 原字符串,请确保其有足够空间容纳替换后的字符串 * size_t len => size of pstr buffer * *******************************************************/ bool replacetb(char* pstr, int len) { if (NULL == pstr) return false; char* p = pstr; while(*pstr != '/0') { if (*pstr == '/t') { if (strlen(p)+3>=len) return false; int num = strlen(p)-(pstr-p); memmove(pstr+3, pstr, num); //原为memcpy pstr[num+3] = '/0'; //未加结束符 *pstr++ = '_'; *pstr++ = '_'; *pstr++ = '_'; *pstr = '_'; } pstr++; } return true; } int main(int argc, char* argv[]) { char szSrc[64] = "/ta/tbb/tccc/tdddd/teeeee/t"; if (replacetb(szSrc, sizeof(szSrc))) cout << szSrc << endl; else cout << "Failed" << endl; return 0; } 另:感谢秦建辉老师指正错误。