近期,项目需要,涉及到了一些以“|”分隔的字符串数据,想要提取其中各数据元素的值
例如:“|0712|932020|1000000000400505|0705|76200250|898469549000201|”
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int GetEle(char* szLine, char* pStr, int n)
{
int nLineSize = strlen(szLine);
int i = 0;
for (; i < nLineSize; i++)
{
szLine[strlen(szLine) - 1] = '|';
//解析一行的数据
char* szTmp = szLine;
char* szLast = szTmp;
int nFiledNum = 0;
while (szTmp = strchr(szTmp, '|'))
{
char szStr[256] = { 0 };
memcpy(szStr, szLast, szTmp - szLast);
szTmp = szTmp + 1;
szLast = szTmp;
if (n == nFiledNum)
{
strcpy(pStr, szStr);
}
++nFiledNum;
}
}
return 0;
}
int main(void)
{
char str[100] = "|0712|932020|1000000000400505|0705|76200250|898469549000201|";
char strn[50] = { 0x00 };
memset(strn, 0x00, sizeof(strn));
int ret = GetEle(str, strn, 6);
if (ret!=0)
{
printf("Error\n");
}
printf("strn=%s\n", strn);
system("pause");
return 0;
}
运行结果: