IT보안관의 공부 클라우드

strtok 구현(C프로그래밍 파워업그레이드) 본문

개발/C

strtok 구현(C프로그래밍 파워업그레이드)

ㅡㅡㅡㅡㄷ 2020. 8. 5. 17:01
#include <stdio.h> 
#include <string.h> 
//strtok 구현 상당히 난이도가 있음.  
char* StringTokenize(char *str, char* delim){ 
	char* sStr=0;// 문자열 시작 위치  
	static char * tstr;// 문자열 주소를 저장하는 정적변수  
	int i=0; 
	if(str!=NULL)sStr=str;// str이 빈 값이 아니면 시작위치에 셋팅  
	else sStr=tstr;//str 이 NULL이면 기존 저장위치를 시작위치에 셋팅  
    if(strlen(sStr)<1)return NULL;//문자열이 끝난지 확인하기 위한 조건 여러가지 방식이 있을 수 있다.  
    for(i=0; i<strlen(sStr); i++){ 
    	if(sStr[i] == (*delim)||sStr[i] == '\0'){ 
    	sStr[i]='\0'; 
    	//printf("i:%d\n",i); 
    	break; 
    	} 
    } 
    tstr=&sStr[i+1]; 
    //printf("sStr[i]:%c &sStr[i]%x\n",sStr[i+1],&sStr[i+1]); 
    return sStr; 
} 

int main(void){ 
    char str[]="010-1111-3333";//토큰을 나눌 문자열 
    char * delim="-";// 토큰을 나눌 기준 
    char * token; 

    //printf("%d",str[0]); 
    token=StringTokenize(str,delim); 
    while(token!=NULL){ 
    	puts(token); 
    	token=StringTokenize(NULL, delim); 
    }  
    return 0; 
} 
Comments