在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