1、将一串字符串中的空格转换成@#$.
void conver(char *buf,char *cbuf) //反着来
{
int count,len,newlen,i;
count =0;
len = strlen(buf);
for(i=0;i<len;i++)
{
if(buf[i] == ' ')
count++; //计算空格数
}
newlen = len + 2*count; //计算新的字符串长度
printf("len:%d,newlen:%d\n",len,newlen);
for(i=len-1;i>=0;i--)
{
if(buf[i] == ' ')
{
cbuf[newlen - 1] = '$';
cbuf[newlen - 2] = '#';
cbuf[newlen - 3] = '@';
newlen = newlen -3; //缩尾
}
else
{
cbuf[newlen -1] = buf[i];
newlen = newlen - 1;
}
}
}
void conver_zhen(char *buf,char *cbuf) //正着来
{
int count,len,newlen,i;
count =0;
len = strlen(buf);
for(i=0;i<len;i++)
{
if(buf[i] == ' ')
count++; //计算空格数
}
newlen = len + 2*count; //计算新的字符串长度
printf("len:%d,newlen:%d\n",len,newlen);
count = 0;
for(i=0;i<len;i++)
{
if(buf[i] == ' ')
{
cbuf[i+count] = '@';
cbuf[i+count+1] = '#';
cbuf[i+count+2] = '$';
count += 2; //加长
}
else
{
cbuf[i+count] = buf[i];
}
}
}
int main()
{
char buf[30]={" 12 ff j k "};
char cbuf[50];
memset(cbuf,0,50);
printf("pre: %s\n",buf);
conver(buf,cbuf); //反着来
printf("cov: %s\n",cbuf);
memset(cbuf,0,50);
conver_zhen(buf,cbuf); //正着来
printf("cov: %s\n",cbuf);
return 0;
}
运行结果:
pre: 12 ff j k
len:12,newlen:24
cov: @#$12@#$ff@#$@#$j@#$k@#$
len:12,newlen:24
cov: @#$12@#$ff@#$@#$j@#$k@#$