나미/C

strsep

규남 2018. 10. 15. 18:17
반응형

항상 쓰던 strtok 함수를 server 작업을 하면서 구별하던 인자값이 연속적으로 나오면 바로 건너뛴다는 사실을 알게 되었다.


그래서 각자리별로 데이터가 있을때는 들어오지만 없을때는 구분자가 붙어서 들어오는 경우가 생겨 


연속적으로 구분자가 올경우에 처리하는 함수인 strsep를 사용해보았다.


사용법은 간단하다


strtok과 같은 역활을 하지만 strsep는 구별자를 만날때마다 체크하는 것이고,

strtok의 경우는 구별자가 연속적으로 들어올경우 NULL이 아니기때문에 한꺼번에 뛰어넘는 값이 나온다~~!!!!


함수 원형은 다음과 같다.

#include <string.h>


char *strsep (char **stringp, const char *delim)

{

char *ptr = *stringp;


if(ptr == NULL)

{

return NULL;

}


while(**stringp)

{

if(strchr(delim, **stringp) != NULL)

{

**stringp = 0x00;

(*stringp)++;

return ptr;

}

(*stringp)++;

}


*stringp = NULL;

return ptr;

}


함수를 가져다 써도 되고 기본적으로 string.h에 포함되어있으니 간단히 사용하면 될꺼같다.


char buff[10] = "a,b,,c,,d"

char *tmp;


tmp = buff;


while((ptr = strsep(&tmp, ",")) != NULL)

{

printf("ptr = %s\n", ptr);

}


위와 같이 하면 결과값은

ptr = a

ptr = b

ptr =

ptr = c

ptr =

ptr = d


이렇게 나올것이다. 말그대로 , (구분자) 갯수별로 나온다 공백은 NULL 값인데 실제로 NULL을 이용할려면

(*ptr == NULL) 이렇게 하면 된다.


728x90
반응형

'나미 > C' 카테고리의 다른 글

함수 포인터(간단하게)  (0) 2023.08.27
https post  (0) 2021.05.27
문자열 자르기 strtok  (0) 2018.02.05
strtol 함수  (0) 2018.02.05
C언어 텍스트 컬러  (0) 2017.07.12
switch case문안에 변수사용하기  (0) 2017.06.21
C언어 파일읽기  (0) 2017.06.21
공유메모리 key 하나로 구조체 배열할당하기  (0) 2017.03.17
hexTobinary(2)  (0) 2017.03.08
hexTobinary  (0) 2016.12.16