[C/C++]将字符串中的空格替换成‘%20’

在网络编程中,如果URL中带有特殊字符,如:空格、‘#’等,可能导致服务器不能获取正确的参数值,需要将这些特殊符号转换成服务器可识别的符号。

转换规则是:在‘%’后面跟上ASCII的两位十六进制的表示,如:空格 ASCII是32 十六进制则是20,因此,空格就被替换成‘%20’。

上代码:

#include "stdafx.h"
#include<iostream>
using namespace std;

char *ReplaceSpace( char Str[])
{
if (Str == NULL)
return NULL;

char *retStr = Str; //指向字符串的首地址
int spaceNum = 0;
while (*Str++ != '\0')
{
if (*Str == ' ')
spaceNum++;
}
char *TemStr = Str; //指向老字符串末尾
char *NewStr = TemStr + 2*spaceNum ; //指向新字符串的末尾
while (TemStr != NewStr)
{
if (*TemStr == ' ') //遇到空格就替换
{
*NewStr-- = '0';
*NewStr-- = '2';
*NewStr-- = '%';
TemStr--;
}
else
{
*NewStr-- = *TemStr--;
}
}
return retStr; //输出修改后的字符串
}

int main()
{
char str[128] = "This is a string test ";  //申明的数组最低长度要能满足修改后的长度
char *retStr = ReplaceSpace(str);
cout << retStr << endl;
return 0;
}

输出结果:

猜你喜欢

转载自www.cnblogs.com/kevinsharif/p/9214326.html