在ffmpeg的avformat 模块中avio.c 对 URL_SCHEME_CHARS 的定义:

#define URL_SCHEME_CHARS                        \
"abcdefghijklmnopqrstuvwxyz" \
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
"0123456789+-."

在 int ffurl_alloc()中有这样一句:

size_t proto_len = strspn(filename, URL_SCHEME_CHARS); //返回 4

此处“filename”类似于:

const char* filename = "rtsp://admin:admin@192.168.7.106:554/h264/ch1/sub/av_stream";

由上面的filename的定义可以看出该字符串 无非就是大小写字母+数字以及一些符号例如“:” "//" "@" "/" 和“.”

如果想解析上面的这个字符串,并且从中取出一些需要的信息的话,使用 strspn()是一个不错的选择。

-----------------------------------------------------------------------------------------------------

补充一下strspn的功能:

strspn(str1,str2);

返回 str1 中第一个不在str2中出现的字符下标。

例:

size = strspn("4232987 is my qq card!","");将返回7

另一个跟strspn相反的函数是:

strcspn(str1,str2);

返回 str1 中不匹配 str2中出现的字符下标。

例:

size = strcspn("my qq card is 4232987!","");将返回14

由ffmpeg中avformat模块中的 URL_SCHEME_CHARS 看 strspn( ) 的妙用的更多相关文章

  1. EBS 中iSupplier模块中的MAPPING_ID

    在EBS的供应商模块中,有一个非常有意思的表 POS_SUPPLIER_MAPPINGS, 这个表中建立了supplier_reg_id,vendor_id,party_id之间的映射关系. 这个表中 ...

  2. python中datetime模块中datetime对象的使用方法

    本文只讲述datetime模块中datetime对象的一些常用的方法,如果读者需要更多datetime模块的信息,请查阅此文档. datetime模块的对象有如下: timedelta date da ...

  3. python中threading模块中最重要的Tread类

    Tread是threading模块中的重要类之一,可以使用它来创造线程.其具体使用方法是创建一个threading.Tread对象,在它的初始化函数中将需要调用的对象作为初始化参数传入. 具体代码如下 ...

  4. Python爬虫学习(4): python中re模块中的向后引用以及零宽断言

    使用小括号的时候,还有很多特定用途的语法.下面列出了最常用的一些: 表4.常用分组语法 分类 代码/语法 说明 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>e ...

  5. Python中TKinter模块中的Label组件

    Python2.7.4      OS—W7x86 1. 简介 Label用于在指定的窗口中显示文本和图像.最终呈现出的Label是由背景和前景叠加构成的内容. Label组件定义函数:Label(m ...

  6. python中threading模块中的Join类

    join类是threading中用于堵塞当前主线程的类,其作用是阻止全部的线程继续运行,直到被调用的线程执行完毕或者超时.具体代码如下: import threading,time def doWai ...

  7. python中datetime模块中strftime/strptime函数

    f==format p==parse 1.获取当前时间(日期格式) from datetime import datetime datetime.now()#输出 datetime.datetime( ...

  8. 原声js实现nodejs中qs模块中的parse和stringfiy方法

    function stringify(obj, sep, eq) { sep = sep || '&'; eq = eq || '='; let str = ""; for ...

  9. Python:python中math模块中提供的基本数学函数

    sin(x):求x的正弦 cos(x):求x的余弦 asin(x):求x的反正弦 acos(x):求x的反余弦 tan(x):求x的正切 atan(x):求x的反正切 hypot(x,y):求直角三角 ...

随机推荐

  1. Node负载能力测试

    需求很简单,就是提供一个服务接口收集端上传来的日志文件并保存,要求能承受的QPS为5000. 以前从来都没考虑过Node服务的负载能力,用 koa + co-busboy 接受上传文件请求并用 fs ...

  2. TreeView.ImageSet 属性

    TreeView.ImageSet 属性 .NET Framework 2.0         注意:此属性在 .NET Framework 2.0 版中是新增的. 获取或设置用于 TreeView  ...

  3. Arcgis andoid开发之应用百度地图接口实现精准定位与显示

    怀着激动.兴奋的心情,在这个漫天柳絮的季节写下了这片博文,为什么呢,因为困扰我很久的一个技术性的问题得到了解决,发次博文,供大家参观.学习,同时,也以慰藉我长期困扰的心情,好了,废话不再,言归正传,看 ...

  4. windows下Perl如何读取大文件的最后一行(总结)

    Perl中读取文件最后一行的方法很多,比如 (1)将文件读入数组,取最后一个元素 open (FILE,"file.txt") or die "$!"; my ...

  5. MySql 批量创建、导入实例

    1.创建sql(例如,taobao,dangdang): DROP DATABASE IF EXISTS taobao; CREATE DATABASE taobao CHARSET=utf8; US ...

  6. transition 总结

    详情:http://www.css88.com/book/css/properties/transition/transition-property.htm left不能进行transition

  7. 快排的python实现

    快排的python实现 #python 2.7 def quick_sort(L): if len(L) <= 1: return L else: return quick_sort([lt f ...

  8. 51nod 1012 最小公倍数LCM

    输入2个正整数A,B,求A与B的最小公倍数. 收起   输入 2个数A,B,中间用空格隔开.(1<= A,B <= 10^9) 输出 输出A与B的最小公倍数. 输入样例 30 105 输出 ...

  9. 基于注解的 Spring MVC 简单入门

    web.xml 配置: <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> ...

  10. UVA11178 Morley's Theorem

    题意 PDF 分析 就按题意模拟即可,注意到对称性,只需要知道如何求其中一个. 注意A.B.C按逆时针排列,利用这个性质可以避免旋转时分类讨论. 时间复杂度\(O(T)\) 代码 #include&l ...