资讯专栏INFORMATION COLUMN

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

Carson / 746人阅读

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

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

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

一.创建新的字符串

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

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

具体代码如下:

</>复制代码

  1. void repace(char arr[], char arr1[]){
  2. int i = 0;
  3. int j = 0;
  4. for (i = 0; arr[i] != "/0"; i++)
  5. {
  6. if (arr[i] == " ")
  7. {
  8. arr1[j++] = "%";
  9. arr1[j++] = "2";
  10. arr1[j] = "0";
  11. }
  12. else
  13. {
  14. arr1[j] = arr[i];
  15. }
  16. j++;
  17. }}

二.原来字符串改动

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

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

具体代码如下:

</>复制代码

  1. void repace(char str[]){
  2. int oldnum = 0; //老的数量
  3. int newnum = 0; //新的数量
  4. int old = 0; //老的最后一个字符
  5. int new = 0; //新的最后一个字符
  6. int kong = 0; //空格的数量
  7. while (str[oldnum] != "/0")
  8. {
  9. if (str[oldnum] == " ")
  10. {
  11. kong++;
  12. }
  13. oldnum++;
  14. }
  15. newnum = oldnum + kong * 2;
  16. old = oldnum -1 ;
  17. new = newnum - 1;
  18. while (old >= 0)
  19. {
  20. if (str[old] == " ")
  21. {
  22. str[new--] = "0";
  23. str[new--] = "2";
  24. str[new] = "%";
  25. }
  26. else
  27. {
  28. str[new] = str[old];
  29. }
  30. old--;
  31. new--;
  32. }}

三.整体代码

第一个整体代码:

</>复制代码

  1. #includevoid repace(char arr[], char arr1[]){
  2. int i;
  3. int j = 0;
  4. for (i = 0; arr[i] != "/0"; i++)
  5. {
  6. if (arr[i] == " ")
  7. {
  8. arr1[j++] = "%";
  9. arr1[j++] = "2";
  10. arr1[j] = "0";
  11. }
  12. else
  13. {
  14. arr1[j] = arr[i];
  15. }
  16. j++;
  17. }}int main(){
  18. char arr[20] = "abc defgx yz";
  19. char arr1[30] = { 0 };
  20. repace(arr, arr1);
  21. printf("%s/n", arr1);
  22. return 0;}

第二个整体代码:

</>复制代码

  1. #includevoid repace(char str[]){
  2. int oldnum = 0; //老的数量
  3. int newnum = 0; //新的数量
  4. int old = 0; //老的最后一个字符
  5. int new = 0; //新的最后一个字符
  6. int kong = 0; //空格的数量
  7. while (str[oldnum] != "/0")
  8. {
  9. if (str[oldnum] == " ")
  10. {
  11. kong++;
  12. }
  13. oldnum++;
  14. }
  15. newnum = oldnum + kong * 2;
  16. old = oldnum -1 ;
  17. new = newnum - 1;
  18. while (old >= 0)
  19. {
  20. if (str[old] == " ")
  21. {
  22. str[new--] = "0";
  23. str[new--] = "2";
  24. str[new] = "%";
  25. }
  26. else
  27. {
  28. str[new] = str[old];
  29. }
  30. old--;
  31. new--;
  32. }}int main(){
  33. char arr[20] = "abc defgx yz" ;
  34. repace(arr);
  35. printf("%s/n", arr);
  36. return 0;}

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

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

相关文章

  • 你真的知道Python的符串怎么用吗?

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

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

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

    jifei 评论0 收藏0

发表评论

0条评论

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