❤️强烈推荐人工智能学习网站❤️

今天要写一个接口,对网址进行http格式的拆分,这也算是http入门级的一个简单字符串处理操作。虽然算法不是很复杂,但其中的代码规范还是值得新手注意的。我下面的代码目的是从网址中获取host,并进行http请求的拼接。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>void getHost(const char http[],char host[],char request[])//不可修改设为const
{if(NULL==http || NULL==host || NULL==request)//传入的指针一定要判空exit(0);if('\0'==http[0]){printf("http is empty\n");exit(1);}int i,j=0,flag=0;if('h'==http[0]&&'t'==http[1]&&'t'==http[2]&&'p'==http[3]&&':'==http[4]&&'/'==http[5]&&'/'==http[6])//这里含有逻辑运算{for(i=0;http[i]!='\0';i++){if('/'==http[i]&&0==flag){  i+=2;if('/'!=http[i]){while('/'!=http[i]){host[j++]=http[i++];}}flag=1;}}host[j]='\0';}else{for(i=0;http[i]!='\0';i++){if(0==flag){while('/'!=http[i]){host[j++]=http[i++];}flag=1;}}host[j]='\0';}sprintf(request,"GET %s HTTP/1.1\r\nHost:%s\r\nConnection: Keep-Alive\r\n\r\n",http,host);
}void getHost1(const char http[],char host[],char request[])
{if(NULL==http || NULL==host || NULL==request)exit(0);if('\0'==http[0]){printf("http is empty\n");exit(1);}int i=0,j=0,flag=0;int num=strncmp(http,"http://",7);if(0==num){i+=7;}for(;http[i]!='\0';i++){   if('/'!=http[i]&&0==flag){while('/'!=http[i]){host[j++]=http[i++];}flag=1;}}host[j]='\0';sprintf(request,"GET %s HTTP/1.1\r\nHost:%s\r\nConnection: Keep-Alive\r\n\r\n",http,host);
}int main()
{char http[100]="http://blog.csdn.net/stpeace/article/details/73028821";char *host = NULL;//host主机char *request  = NULL;//请求//request需要较大内存,所以这里用栈存储不合适,用malloc分配内存,这里一次性分配host和request两个占用的内存host = (char *)malloc(100+2803);//前面100个存host主机if(NULL==host){return 0; }request = host +100;getHost1(http,host,request);printf("%s\n",request);return 0;
}

从网址中获取host首先要判断网址中是否含有http,要能同时处理这两种情况。变量取名时,也应该按大致英文取名,便于直观看。

网址http格式的拆分相关推荐

  1. 获取网页或文件中的邮箱地址/网址 格式

    1.获取邮箱地址格式: egrep regex: [A-Za-z0-9.]+@[A-Za-z0-9.]+\.[a-zA-Z]{2,4} 格式说明: 邮件地址格式为 name@domain.some_2 ...

  2. URL网址的正则检验(验证字符串是否符合URL网址的格式)

    [ 学习探索过程中记下的点点笔记,以供分享,欢迎大家一起学习探讨-如有雷同可附链接,谦虚学习!] URL网址的组成部分: 协议:// =>协议有http/https/ftp (可有可无) 域名 ...

  3. 【VBA】Excel拆分表格,并且复制格式

    需求 1.将总表根据[销售部门]拆分成不同的表格 2.拆分后保持格式不变 拆分前 总表 拆分后 表结构 一部 二部 七部 代码如下 Sub cfgzb() '拆分工作表Dim i As Integer ...

  4. python基础===拆分字符串,和拼接字符串

    给定某字符,只需要保留其中的有效汉字或者字母,数字之类的.去掉特殊符号或者以某种格式进行拆分的时候,就可以采用re.split的方法.例如 ============================== ...

  5. php检测网址是否有效,php 检测因特网址是否有效

    php 检测网址是否有效 1. ?网址的格式: ?function checkUrl($weburl) { return !ereg("^http(s)*://[_a-zA-Z0-9-]+( ...

  6. 数组的定义格式三_省略的静态初始化

    package com.learn.day05.demo01;/* 使用静态初始化数组的时候,格式还可以省略一下.标准格式: 数据类型[] 数组名称 = new 数据类型[] { 元素1, 元素2, ...

  7. 分享几个病毒分析检测网址

    1.在线病毒分析网站: 以下网站上传样本后,很快就会在网页上出报告的: (1)这个网址报告格式很简洁,我很喜欢:http://camas.comodo.com/ (2)这个网址的报告最全面,而且会真的 ...

  8. php 检测网址是否有效

    1.  网址的格式: function checkUrl($weburl) { return !ereg("^http(s)*://[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-] ...

  9. 计算机电子邮箱格式,英语邮箱格式,电子邮件格式范文!

    英语电子邮件该怎么写? 一封邮件的基本内容通常分为三部分:收件人.主题.正文.1.接收人.接收人为传递信息或分布任务的对象.除了接收人之外还可以同时抄送给其他人,抄送对象要看.电子邮件的格式和范文 电 ...

最新文章

  1. Asp.net下实现隐藏真实下载地址(可以实现简单的防盗链)
  2. VS2005+SQL2005 ASP.NET2.0数据库连接
  3. Linux下 SpringBoot jar项目后台运行、查看、停用
  4. vue 引入swiper4,在有些手机Dom7会有问题
  5. 成功解决ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() o
  6. java卡片布局显示效果_三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)...
  7. SpringMVC——Maven项目依赖包
  8. LeetCode 39. 组合总和(排列组合 回溯)
  9. 《计算机网络:自顶向下方法(原书第6版)》一2.7 TCP套接字编程
  10. LAMP+Zabbix课程总结
  11. python如何使用本地数据库_使用Python在虚拟机上怎么连接本地数据库
  12. iOS开发--底部按钮和应用图标显示未读消息
  13. shell中find某个文件排除某个目录
  14. 人工智能实验——八数码难题
  15. Codesys + BeagleBone PLC控制达到小儿科水平
  16. 开源协议及应用 (BSD/GPL/LGPL/Apache/MIT)
  17. IT十年人生过客-十八-路过机遇
  18. C++ GBD调试
  19. 酸狗带你进入JAVA世界
  20. 花指令的原理和常用花指令收集

热门文章

  1. HashMap构造函数有哪些
  2. Android java 多线程(三)
  3. 最最简单的CentOs6在线源搭建
  4. java的单例设计模式
  5. Steam 导入已下载好的游戏
  6. iOS中正则表达式的基本使用方法
  7. gridview里找到控件
  8. VS.NET 2005 SP1 安装注意
  9. Matlab Robotic Toolbox V9.10工具箱(六):puma560 动力学建模与仿真
  10. 【OSS 排查方案-5】透过现象看本质之网络排查分析