오늘의 일기 : g_strsplit

오늘은 g_strsplit의 사용법을 배워야만 했다.

일단 사용법은 다음과 같다.

gchar** g_strsplit (const gchar *string,
const gchar *delimiter,
gint max_tokens);


http://developer.gnome.org/doc/API/2.0/glib/glib-String-Utility-Functions.html#g-strsplit


저거 쓰기 전에 일단 2중 포인터 **string를 선언해야 한다.

char **string;

이렇게 하면 string이라는 이름의 문자열 배열을 “여러개”가질 수 있는 2중 포인터가 선언된다.

char xxxx=”abc/123″;

string=g_strsplit(xxxx,/,2);

이렇게 하면 string이라는 곳에는 2개의 공간이 확보되어 각각 “abc”와 “123”이라는 문자열이 하나씩 들어간다. 즉, *(string+0) = “abc” 하고 *(string+1)=”123″이 실행된 것이다.

즉, xxxx라는 문자열을 /라는 글자를 기준으로 2개로 자르라는 뜻이다. 물론 앞에서부터 자르므로, 뒤에 /가 여러개 있으면 있어도 무시된다. 2대신에 더 큰 숫자를 넣으면 더 여러개로 잘라진다. 만약 max_tokens를 -1을 넣게 되면 /가 나오는데마다 다 잘라준다.

물론 구분자는 /말고 아무거나 써도 된다. 1이든 g든 ^이든.

다행인지 불행인지, 선언만 해놓고 memory allocation은 안해도 된다. 알아서 해준다.

그리고 더불어서 앞에 g_가 말해주듯이 저것은 glib2.0에서 제공하는 함수이다. glib 설치는 알아서 하시고, 컴파일 옵션에

`pkg-config –cflags glib-2.0` `pkg-config –libs glib-2.0`

를 넣어줘야 한다. 역따옴표` 포함이라는 사실에 주의!

만약 구분자를 여러개 쓰고 싶으면 g_strsplit_set을 쓰면 된다. 이건 delimeter자리에 여러개의 문자를 넣어도 되는데, 그 여러개 중 아무거나 하나 있으면 거기서 잘라준다. 나머지는 똑같다. 예를들어 !@#를 넣으면 !나 @나 #가 나오기만 하면 잘라준다는 뜻.

코멘트

“오늘의 일기 : g_strsplit”에 대한 2개 응답

  1. 
                  snowall
                  아바타

    아는게 C밖에 없는지라…

  2. 
                 wookay
                 아바타

    C는 구려서 ^^:;

wookay 에 응답 남기기응답 취소

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.