由ffmpeg中avformat模塊中的 URL_SCHEME_CHARS 看 strspn( ) 的妙用

在ffmpeg的avformat 模塊中avio.c 對 URL_SCHEME_CHARS 的定義:函數

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


 

在 int ffurl_alloc()中有這樣一句:url

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

此處「filename」相似於:code

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

由上面的filename的定義能夠看出該字符串 無非就是大小寫字母+數字以及一些符號例如「:」 "//" "@" "/" 和「.」orm

若是想解析上面的這個字符串,而且從中取出一些須要的信息的話,使用 strspn()是一個不錯的選擇。blog

-----------------------------------------------------------------------------------------------------字符串

補充一下strspn的功能:io

strspn(str1,str2);form

返回 str1 中第一個不在str2中出現的字符下標。class

例:

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


 

另外一個跟strspn相反的函數是:

strcspn(str1,str2);

返回 str1 中不匹配 str2中出現的字符下標。

例:

size = strcspn("my qq card is 4232987!","012345689");將返回14
相關文章
相關標籤/搜索