摘自百度知道的一个问题

比如说我要截取http://img.baidu.com/img/logo-zhidao.gif中的我

logo-zhidao.gif文件名称当然次url可以是任意的就像迅雷的下载的一样他会自动把文件名提取出来也就是最后一个反斜杠后面的内容。要写成一个函数的形式可以调用!要输出的是字符串%s的形式!

思路大概如下:将整个字符串及其长度传给函数,然后在函数中用指针接收字符串,利用其长度把指针移到字符串结尾处,然后用循环不断将指针向前移动,并判断其指向的字符与/是不是一样的,如果一样退出循环,此时指针指向着字符串中最后一个/

的前一个字符, 因此最后将指针再向前移2位到/后面的一个字符,最后反回指针, 再输出返回的指针后面的内容就是名称了

回答一

函数声明:char* GetName(char*,int);

整个程序:

#include

char* GetName(char*,int);

int main(void)

{

char str[] = "http://img.baidu.com/img/logo-zhidao.gif";

char *name;

int n;

n =

sizeof(str); //计算字符串的长度(包括'\0')

name = GetName(str,n); //把字符串及其长度传给函数

printf("%s\n",name); //name就是那个名称,可以输出

return 0;

}

char* GetName(char*ptr,int n)

{

int i =

n; //这里i只是为循环即使终止了也未找到/而准备

ptr+=n; //把指针移到字符串的尾部,即'\0'处

while(i-->0)

{

if((*ptr--) == '/') //指针不断回移并判断是否为/符号

{

break; //从后向前遇到第一个/后退出循环

}

}

ptr+=2; return ptr; //反回最后一个/后面的字符串即名称

}

函数原型:

char* GetName(char*ptr,int n)

{

int i = n;

ptr+=n;

while(i-->0)

{

if((*ptr--) == '/')

{

break;

}

}

ptr+=2;

return ptr;

}

回答二

用for从后往前取,每拿一个字符就写入数组,遇见/后中止读取,这时候翻转缓冲区就能得到文件名

void AddChar(char *buf, char ch)

{

char a[2]={0};

a[0]=ch;

strcat(buf,a);

}

char *GetFileName(char *url)

{

char tmp, buf[256]={0}, RetVal[256]={0};

//取反文件名

for(int i=strlen(buf); *(url+i)!='/'; i--)

{

AddChar(buf,

*(url+i));

}

//翻转文件名

for(int i=strlen(buf), j=0; *(url+i)!=0;

i--,j++)

{

RetVal[j] =

*(url+i);

}

return RetVal;

}

每当在百度知道看到好的回答的时候,就感觉心潮澎湃

呵呵,我想这些正真为网友解决问题的人才是我们正真需要的人,他们回答问题,是本着对网友负责的态度,其实也是对自己负责的态度。不图名,不图利。只为能帮助需要帮助的人。我曾经和我的一个朋友说过,其实,在生活中,存在着很多锻炼自己能力的机会,是我们自己的懒惰,是我们自己的不负责任,使机会一次一次的离我们而去,那些真正为网友解决问题的人,他们不仅锻炼了自己的能力,而且还帮助了别人,一举两得,他们真正做到了对自己负责。如果你只是想在百度知道混分的话,我劝你还是停止吧,你是在浪费时间和精力。一些拙见,自勉。呵呵。

c语言 url字符串解析,c语言截取下载url中文件名称相关推荐

  1. c语言定于字符串string,c语言字符串string

    c语言中,怎么样定义一个字符串变量 C语言没有字符串类型,所以没办法进行定义字符串变量. 但是可以用字符数组来处理字符串.(这定义了一个字符数组,名为a) 例:char a[] = "hel ...

  2. go语言json字符串解析为结构体数组,结构体指针的数组

    废话不多说直接上效果图 完整代码如下 package main import ("encoding/json""fmt" ) // 结构体定义 type rob ...

  3. c语言作业 字符串替换,C语言字符串替换。解决方法

    当前位置:我的异常网» C语言 » C语言字符串替换.解决方法 C语言字符串替换.解决方法 www.myexceptions.net  网友分享于:2015-04-14  浏览:0次 C语言字符串替换 ...

  4. c语言回收字符串空间,C语言基础知识(字符串,函数,内存空间)

    C 语言重点 arc4random() //产生一个随机数arc4random()A 随即数对41取余 得到0-40的数余数是正数 arc4random() % 11 + 20// 20 -30的数公 ...

  5. c语言转义字符表解析,C语言常用转义字符表

    <C语言常用转义字符表>由会员分享,可在线阅读,更多相关<C语言常用转义字符表(4页珍藏版)>请在人人文库网上搜索. 1.精选文库 C语言常用转义字符表 转义字符 含义 ASC ...

  6. 数据结构C语言版字符串,数据结构c语言版

    数据结构c语言版是一款非常使用的数据结构课程的编写和教材:它也可将软件作为学习数据结构.算法C程序设计的参数教材,只需要用户学习该软件之后,就算遇到在繁杂的代码也可以清晰的写出来,本书的钱半部分主要介 ...

  7. c语言输出字符串缩进,C语言printf()和puts()的简单使用

    程序在计算机的内存中运行,得出结果以后总是需要输出,这样我们才能查看程序的运行状况.C语言用于输出的主要方法是使用格式输出函数 printf( ) 和字符串输出函数 puts( ). printf( ...

  8. c语言输入字符串 Eof,C语言多行字符串eof问题如何解决?

    C语言多行字符串eof问题如何解决? #include void main() { printf("input a sentence \n"); char a[80],*p; in ...

  9. C语言字符串哪个头文件,如果在程序中要使用C语言的字符串处理函数,应在程序中包含这哪个头文件。...

    程程下列不是K均值聚类的缺点的是() 神--申--电,序中序中这三个字是从一个词分化出来的."神"写作"申",也就是"电",是让人恐怖,让人 ...

最新文章

  1. CDO/CDS与次贷危机
  2. 第十二周项目一-实现复数类中的运算符重载(1)
  3. 【业务知识】数字档案馆建设内容
  4. mysql 子查询优化一例
  5. Hive JOIN使用详解
  6. oracle中表截断是什么意思,Oracle截断表
  7. ubuntu12.10下安装mysqlworkbench出现“Dependency is not satisfiable: libctemplate0”问题的解决方案...
  8. vim中如何设置多行注释和删除注释
  9. 服务器打包运营级H5商城源码
  10. 聚宽macd底背离_老股民技巧一招鲜:MACD顶、底背离图解及近期实战应用,字字斗金...
  11. 为什么使用%lf读取double型的值,而用%f进行显示?
  12. Windows 11 来了!无缝支持安卓 App,界面却像极了 macOS
  13. matlab 带通滤波函数,MATLAB窗函数实现带通滤波器
  14. JAVA网络编程-TCP客户端与服务器端连接
  15. 【论文翻译 arXiv 2020】异质网表示学习综述-韩家炜组
  16. PAT乙级刷题感想及踩坑总结
  17. 软考之系统架构师考试经验分享
  18. 三元运算符语法格式php,php中三元运算符用法详解
  19. IE浏览器发送两次相同请求第二次读取第一次缓存问题
  20. 今年,我只赚了一点点

热门文章

  1. STM32学习之ILI9341控制显示屏输出(一)
  2. java StringTokenizer的用法
  3. 人工智能科技出海服务公司ADVANCE.AI助力企业开拓尼日利亚市场
  4. word(2010)使用VBA完成批处理操作-批量清除表格某单元格内容
  5. Rancher2.6 Monitoring Grafana 对接 LDAP
  6. 技术总监经验总结: 从需求到上线之用户故事地图
  7. Linux命令 - wget
  8. 生物信息学: 使用python包GOATOOLS查询GO
  9. 陕西计算机考研难度排行榜,陕西地区计算机考研院校分析「建议收藏」「最全」...
  10. 四平方和定理(拉格朗日定理)