资讯专栏INFORMATION COLUMN

c语言之要求写一个函数,将字符串中的空格替换为%20

Carson / 517人阅读

摘要:题目要求写一个函数,将字符串中的空格替换为。新的字符串就是将旧的字符串里面的空格改成。我们需要求出原来字符串的长度,再求出空格的数量,新的字符串的长度就原来字符串的长度加上空格数量的二倍。

题目:要求写一个函数,将字符串中的空格替换为%20。

样例: “abc defgx yz” 转换成 “abc%20defgx%20yz”

一.创建新的字符串

根据题目要求,我们可以创建两个字符串,一个字符串用来放原字符串,另一个可以遍历后成新的字符串。新的字符串就是将旧的字符串里面的空格改成%20。

这种算法也比较简单就是单纯的从前面往后面遍历,遇见空格就改成%20。

具体代码如下:

void repace(char arr[], char arr1[]){	int i = 0;	int j = 0;	for (i = 0; arr[i] != "/0"; i++)	{		if (arr[i] == " ")		{			arr1[j++] = "%";			arr1[j++] = "2";			arr1[j] = "0";		}		else		{			arr1[j] = arr[i];		}		j++;	}}

二.原来字符串改动

第二种算法不用创建新的字符串,就是在原来的字符串上修改。我们需要求出原来字符串的长度,再求出空格的数量,新的字符串的长度就原来字符串的长度加上空格数量的二倍。

然后从旧字符串的最后一个先前遍历,遇见空格就倒序输出%20;

具体代码如下:

void  repace(char str[]){	int oldnum = 0;   //老的数量	int newnum = 0;   //新的数量	int old = 0;      //老的最后一个字符	int new = 0;      //新的最后一个字符	int kong = 0;     //空格的数量	while (str[oldnum] != "/0")	{		if (str[oldnum] == " ")		{			kong++;		}		oldnum++;	}	newnum = oldnum + kong * 2;	old = oldnum -1 ;	new = newnum - 1;	while (old >= 0)	{		if (str[old] == " ")		{			str[new--] = "0";			str[new--] = "2";			str[new] = "%";		}		else		{			str[new] = str[old];		}		old--;		new--;	}}

三.整体代码

第一个整体代码:

#includevoid repace(char arr[], char arr1[]){	int i;	int j = 0;	for (i = 0; arr[i] != "/0"; i++)	{		if (arr[i] == " ")		{			arr1[j++] = "%";			arr1[j++] = "2";			arr1[j] = "0";		}		else		{			arr1[j] = arr[i];		}		j++;	}}int main(){	char arr[20] = "abc defgx yz";	char arr1[30] = { 0 };	repace(arr, arr1);	printf("%s/n", arr1);	return 0;}

第二个整体代码:

#includevoid  repace(char str[]){	int oldnum = 0;   //老的数量	int newnum = 0;   //新的数量	int old = 0;      //老的最后一个字符	int new = 0;      //新的最后一个字符	int kong = 0;     //空格的数量	while (str[oldnum] != "/0")	{		if (str[oldnum] == " ")		{			kong++;		}		oldnum++;	}	newnum = oldnum + kong * 2;	old = oldnum -1 ;	new = newnum - 1;	while (old >= 0)	{		if (str[old] == " ")		{			str[new--] = "0";			str[new--] = "2";			str[new] = "%";		}		else		{			str[new] = str[old];		}		old--;		new--;	}}int main(){	char arr[20] = "abc defgx yz" ;	repace(arr);	printf("%s/n", arr);	return 0;}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/118814.html

相关文章

  • Zsh 开发指南(第三篇 符串处理转义字符和格式化输出)

    摘要:导读上一篇讲了的常用字符串操作,这篇开始讲更为琐碎的转义字符和格式化输出相关内容。最常用的转义字符是换行回车。如果需要输出转义字符,尽量统一使用,避免不一致导致的麻烦。默认是会对转义字符进行转义的,加后会原样输出。 导读 上一篇讲了 zsh 的常用字符串操作,这篇开始讲更为琐碎的转义字符和格式化输出相关内容。包括转义字符、引号、print、printf 的使用等等。其中很多内容没有必要...

    helloworldcoding 评论0 收藏0
  • 你真的知道Python的符串怎么用吗?

    摘要:方法可接收两个参数,第一个参数是分隔符,即用来分隔字符串的字符,默认是所有的空字符,包括空格换行制表符等。拆分过程会消耗分隔符,所以拆分结果中不包含分隔符。 正如《你真的知道Python的字符串是什么吗?》所写,Python 中字符串是由 Uniocde 编码的字符组成的不可变序列,它具备与其它序列共有的一些操作,例如判断元素是否存在、拼接序列、切片操作、求长度、求最值、求元素的索引位...

    Thanatos 评论0 收藏0
  • 你真的知道Python的符串怎么用吗?

    摘要:方法可接收两个参数,第一个参数是分隔符,即用来分隔字符串的字符,默认是所有的空字符,包括空格换行制表符等。拆分过程会消耗分隔符,所以拆分结果中不包含分隔符。 正如《你真的知道Python的字符串是什么吗?》所写,Python 中字符串是由 Uniocde 编码的字符组成的不可变序列,它具备与其它序列共有的一些操作,例如判断元素是否存在、拼接序列、切片操作、求长度、求最值、求元素的索引位...

    scwang90 评论0 收藏0
  • 你真的知道Python的符串怎么用吗?

    摘要:方法可接收两个参数,第一个参数是分隔符,即用来分隔字符串的字符,默认是所有的空字符,包括空格换行制表符等。拆分过程会消耗分隔符,所以拆分结果中不包含分隔符。 正如《你真的知道Python的字符串是什么吗?》所写,Python 中字符串是由 Uniocde 编码的字符组成的不可变序列,它具备与其它序列共有的一些操作,例如判断元素是否存在、拼接序列、切片操作、求长度、求最值、求元素的索引位...

    Jinkey 评论0 收藏0
  • 你真的知道Python的符串怎么用吗?

    摘要:方法可接收两个参数,第一个参数是分隔符,即用来分隔字符串的字符,默认是所有的空字符,包括空格换行制表符等。拆分过程会消耗分隔符,所以拆分结果中不包含分隔符。 正如《你真的知道Python的字符串是什么吗?》所写,Python 中字符串是由 Uniocde 编码的字符组成的不可变序列,它具备与其它序列共有的一些操作,例如判断元素是否存在、拼接序列、切片操作、求长度、求最值、求元素的索引位...

    jifei 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<