-
strspn/strcspnProgrammer/Programming 2013. 7. 9. 09:37
ffmpeg 코드를 보던 중에 못 보던 함수를 만났다. C 언어의 스트링 관련 함수는 거의 다 안다고 생각했는데, 학부까지 포함하면 20년만에 새로운 함수를 발견했다.
#include <string.h> size_t strspn(const char *s, const char *accept); size_t strcspn(const char *s, const char *reject);
메뉴얼 페이지에 의하면, strspn() 함수는 accept에 있는 문자들로 이루어져있는 s의 부분 문자열의 처음의 개수를 구한다. 즉, s 문자열의 앞에서 읽기 시작하여 accept에 포함되지 않은 문자가 나타나면 그 지점에서 멈추고 개수를 반환한다.
반대로, strcspn() 함수는 전체적으로 reject에 없는 문자들로 이루어져있는 s의 부분 문자열의 개수를 돌려준다. 간단하게 표현하면, reject에 포함된 문자가 나타나면 읽기를 중단하고 개수를 리턴한다.
ffmpeg에서 strspn을 URL의 프로토콜을 알려주는 부분(URL scheme name)을 파싱하기 위해서 사용했다.
#define URL_SCHEME_CHARS \ "abcdefghijklmnopqrstuvwxyz" \ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ "0123456789+-." size_t proto_len = strspn(filename, URL_SCHEME_CHARS);
'Programmer > Programming' 카테고리의 다른 글
현상을 분석하여 문제의 원인을 찾아내라 (1) 2013.11.12 간결하고 효율적인 프로그래밍 (1) 2013.07.22 치환 모델 (Substitution Model) (0) 2013.04.10 DEFPARAMETER와 DEFVAR의 차이 (0) 2013.01.17 LISP : 플레이어와 상호 작용하는 텍스트 게임 엔진 만들기 (0) 2013.01.14 댓글