这个代码就记录在此。道理很简单,就是处理起来略微麻烦。
代码经过测试,运行正常。各种情形应该都考虑到了。
#define LINE_VALID_CHAR(pBuffer,nStart) (pBuffer[nStart] != ' ' && pBuffer[nStart] != '\r' && pBuffer[nStart] != '\n')
bool trim(char* pText)
{
return trim2(pText, NULL);
}
/**
True:当前行有值。
False:当前行无值。
*/
bool trim2(char* pText, char* pNew)
{
int src_len = strlen(pText);
if (src_len == 0)
{
return false;
}
char* pData = (pNew != NULL ? pNew : pText);
int data_end = 0;
for (data_end=src_len-1; data_end>=0; data_end--)
{
if (LINE_VALID_CHAR(pText, data_end))
{
break;
}
}
//全部是无效值
if (data_end < 0)
{
pData[0] = 0;
return false;
}
int data_start = 0;
for (data_start=0; data_start 0 || data_end < (src_len-1))
{
strncpy(pData, pText+data_start, data_len);
pData[data_len] = 0;
}
return true;
}