C语言的4种方式实现空格转换为%20

下面介绍C语言将空格的转换为%20的四种方法

方法一

介绍:

//在 C 语言标准(C89)没有定义布尔类型,所以 C 语言判断真假时以 0 为假,非 0 为真。所以我们通常使用逻辑变量的做法:

//定义一个int类型变量,当变量值为0时表示false,值为1时表示true
int flag;
flag = 0;
//......
flag = 1;if( flag )
{
//......
}

//在最新的 C 语言标准(C99)解决了布尔类型的问题。C99 提供了 _Bool 型,所以布尔类型可以声明为 _Bool flag。//C99还提供了一个头文件 <stdbool.h> 定义了 bool 代表 _Bool,true 代表 1,false 代表 0。只要导入 stdbool.h ,就能非常方便的操作布尔类型了。

//C 库函数 - gets() ,c标准库<stdio.h> 描述:C 库函数 char *gets(char *str) 从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

#include<stdio.h>
#include<string.h>
//导入 stdbool.h 来使用布尔类型
#include <stdbool.h>
#define M 10000
void main()
{char str[M] = "\0";  //字符数组初始化\0char x[M] = "\0";char k[4] = "%20"; //将字符串%20赋值给数组kprintf("请输入字符串:");gets(str);printf("替换前:%s\n",str);int y,j;int z = 0;int i = 0;bool is = false;while(str[i]){if(str[i] == ' '){if(is == false){j=0;while(k[j] != '\0')  //将数组k的值赋值给数组x{x[z]=k[j];j++;z++;}is = true; }   }else{is = false;x[z] = str[i];z++;} i++;}x[z]='\0';printf("转换后:%s",x);
}

方法二

C 库函数 - fgets() ,c标准库<stdio.h> 描述:C 库函数 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

#include<stdio.h>
#include<string.h>
#define M 10000
int main()
{char str[M] ;//将%20以三个字符的形式装在数组k里char k[4] ={'%','2','0'};printf("请输入字符串:");fgets(str, M, stdin);int j,p;int i = 0; while(str[i] != '\0'){if (str[i] == ' '){j = strlen(str);//从后往前,将每个字符往后移2位for(;j>i;j--){str[j + 2] = str[j];}//遍历数组依次赋值p=0;while(k[p] != '\0'){str[i]=k[p];i++;p++;}}elsei++;}printf("替换后为:%s",str);return 0;
}

方法三

#include<stdio.h>
#include<string.h>
#define M 10000
int main()
{char str[M];char str2[M];printf("请输入字符串:");fgets(str,M,stdin);printf("替换前:%s\n",str);
//  for循环初始声明仅在C99或C11模式下允许
//  for (int i = 0; str[i] != '\0';)int i;int j=0;for(i = 0; str[i] != '\0'; i++){if(str[i] != ' '){str2[j++] = str[i];}else{str2[j++] = '%';str2[j++] = '2';str2[j++] = '0';}}str2[j] = '\0';printf("替换后为:%s",str2);return 0;}

方法四

#include<stdio.h>
#include<string.h>
#define M 10000
int main()
{char str[M] ;printf("请输入字符串:");fgets(str, M, stdin);printf("替换前:%s\n",str);int count = 0;//记录空格数int i;for (i = 0; str[i] != '\0'; i++){if (str[i] == ' ')      count++;       //统计空格的数量,i此时已经走到最后一个字符 }int j = i + 2 * count;//当前可以存放移动后的字符下标for (; i >= 0; i--){if (str[i] != ' ') //不是空格字符将被赋值{str[j--] = str[i];}else //是空格则依次将%20倒序赋值{str[j--] = '0';str[j--] = '2';str[j--] = '%';}}printf("替换后为:%s", str);return 0;
}

代码内容参考于https://blog.csdn.net/weixin_51609435/article/details/121211541

C语言的4种方式实现空格转换为%20相关推荐

  1. JavaScript调用C语言的几种方式

    JavaScript是脚本语言不能直接调用C语言接口,但是可以通过下面几种方式: 使用C语言编写的WebAssembly模块,WebAssembly是一种可在网页中运行的二进制代码格式,可以使用Jav ...

  2. rsa1024 公钥c语言程序,两种方式生成RSA 公钥私钥

    两种方式-生成RSA256私钥公钥 两种方式生成私钥公钥 1.ssh-keygen 方式 生成加密长度4096位密钥 生成私钥:ssh-keygen -t rsa -b 4096 -f ${priva ...

  3. c语言函数三种方式,c语言函数的三种调用方式是什么

    函数的三种调用方式:1.函数作为表达式中的一项出现在表达式中,例"z=max(x,y)":2.函数作为一个单独的语句,例"printf("%d",a) ...

  4. 【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

  5. c语言冒泡排序法程序填空_【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

  6. 冒泡排序的两种方式c语言代码,【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

  7. r如何连接oracle,R语言 R两种方式连接Oracle

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 一.通过RODBC包连接oracle 1.首先在本机找到ODBC数据源,点击添加,按照自己的oracle,填写下面三个位置 2.填写完之后,点 ...

  8. C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换

    使用gmtime函数或localtime函数将time_t类型的时间日期转换为structtm类型: 使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年.月.日 ...

  9. 【C语言】三种方式不使用分号输出HelloWorld

    这个内容其实没有太大的实际意义,只是觉得有趣,边想着分享一下. 方法一:使用if #include <stdio.h>int main() {if(printf("HelloWo ...

最新文章

  1. 再见了,Python!!
  2. MySQL数据库启动报The server quit without updating PID file
  3. 脑电分析系列[MNE-Python-12]| 注释连续数据
  4. php cms word导入,phpcms V9文章编辑器不能按word文档复制过来的段头缩进显示
  5. 我在河南安阳拍摄的一个山村小孩儿
  6. 卸载wrapt_[python] 安装TensorFlow问题 解决Cannot uninstall 'wrapt'. It is a distutils installed project...
  7. html转pdf后 框会消失,html或其它文件转pdf弹出打开保存框
  8. 2020-2021家居行业年度盘点与趋势洞察
  9. [暴力]JZOJ 5842 a
  10. java system datetime_Java8新特性时间日期库DateTime API及示例
  11. linux中设置环境变量_如何在Linux中设置环境变量
  12. 使用php的curl根据关键词爬取百度搜索结果页
  13. Go语言的线程模型-线程阻塞+线程调度
  14. 下载envi中遇到的问题
  15. sdk前置服务器 设备和商户信息不匹配,豌豆荚融合SDK接入常见问题
  16. Eterm连接不上-10001:登录失败
  17. 嵌入式——Linux 学习之路(二):Docker
  18. HEG运行错误:GetBeginAndEndLocs
  19. 求最大公约数和最小公倍数的方法:
  20. linux命令统计word字数,Word:不启动也能进行字数统计(转)

热门文章

  1. 宿命争论!物理和数学的前年纠葛!道翰天琼认知智能机器人API平台接口为您揭秘。
  2. Claris’ Contest # 2 Day 2 Problem C. Dash Speed(分治+可持久化并查集+树剖)
  3. (一)linux基本命令
  4. 海外用户用不了鸿蒙系统,海外用不了!鸿蒙系统成国内专用,华为如何才能战胜谷歌安卓...
  5. 浅谈iframe的优缺点及应用场景
  6. java对象序列化存储到文件、从文件中反序列化读取java对象
  7. 我们到底应该在大学里得到什么?
  8. SpringClound——Feign
  9. Criteria的用法
  10. 从零开始的python爬虫速成指南