您的位置:首页 > 其它

去掉字符串中的某个字符函数—以‘0’为例

2010-10-22 11:23 162 查看
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/********************************************************
*函  数:void delzero(char *pData, int isize)
*功  能:去掉数据缓冲区(首地址为pData)中数据中的0
*		(最多连续3个0)字符,数据以4个字符0终止。
*参  数:pData:数据缓冲区首地址
*		 isize:缓冲区最大长度
*返回值:无
//********************************************************/
void delzero(char *pData, int isize)
{
int i=0, j=0, count=0;
char *tData, *nData;

tData = pData;
/*合法性检测*/
if(pData == NULL)
{
perror("pData:");
return;
}
nData = (char *)malloc(isize);		//申请一段空间nData,用于存放非0字符
for(i=0,j=0; i<isize; i++)
{
if(*(tData+i)!= '0')
{
*(nData+(j++)) = *(tData+i);//非0字符存放到nData空间去
count = 0;
}
else
{
count++;
if(count == 4)
{
memset(nData+j, '0', 4);//判断数据结束,且给数据加上结束符,即4个0字符
break;
}
}
}
memcpy(pData, nData, isize);		//去掉数据段中的0且有4个0为结束符的数据拷贝给原数据地址
free(nData);						//释放空间,防止内存泄露
return;
}

int main(void)
{
char str[] = "000jfdjf000JF00DKLFJ0000FJDKLJ000FLD";
delzero(str, strlen(str));
printf("str:%s/n",str);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐