C 에서 문자열의 뒷부분 취하기...
글쓴이: 익명 사용자 / 작성시간: 월, 2002/08/19 - 8:01오후
안녕하세요
다름이 아니라, C 에서 만약 "name__kim" 이런 문자열이 있다고 합시다.
__ 이 구분자 이고요.
여기서 kim 만 취할 수 있는 방법은 없나요?
strncpy 와 같은 함수는 문자열의 앞부분에서 필요한 문자열을
취할 수가 있잖아요?
그런데 문자열의 뒤에 필요한 문자열을 취할 수 있는 함수나 방법이
있는지요?
strstr 같은 경우도 뒤에 kim 이라는 문자열이 올지 park 이라는 문자열이
올지 모르기 때문에 적용하기가 힘들것 같습니다.
Forums:
Re: C 에서 문자열의 뒷부분 취하기...
구분자로 문자열을 쪼개주는 strtok()라는 함수가 있습니다.
strtok()의 단점들...
ANSI C 라이브러리에 있는 strtok()은
문자열 버퍼의 내용을 건드리기 때문에
원래의 문자열 버퍼의 내용을 유지하고자 하려면
백업버퍼를 하나 더 두어야 하는 불편함이 있고,
동작시 내부적으로 static 변수를 사용하기 때문에
이중 루프 같은데에서 겹쳐서 호출하거나,
멀티스레딩에서 에러가 생기는 결정적인 단점이 있습니다.
(thread-safe한 strtok_r() 함수가 glibc에는 있지만,
ANSI C 호환이 아니므로 gcc가 아닌 다른 컴파일러에서는 쓸 수 없습니다.
가능한 한 ANSI C/C++ 호환으로 작성하시는 것이 좋습니다.)
C++ 사용자시라면, ANSI C++ string 클래스의,
stdstringfind_first_of()와 stdstringfind_first_not_of()
멤버 함수를 사용하여, 간단히 토크나이저(tokenizer)를 구현해서 쓰시든 가,
Boost C++ Library (http//boost.org)의 tokenizer 클래스를 써보실 것을 권합니다.
Re: C 에서 문자열의 뒷부분 취하기...
char buff[10]="name__kim";
char buff2[10];
int i,j=0;
for(i=0;i<10;i++)
if(buff[i]=='_' && buff[i+1]=='' &&buff[i+2]==''&& buf[i+3]=='_')
{ while((buff2[j]=buff[i+4+j])!='\0') j++;
break;
}
막노동입니다만.... 이렇게 할수도 있을거 같아서.....
문자열에 길이는 임으로 잡았는데 조정할수도.....
추출하는 뒤에 토큰 값이 온다면 그걸로 대입하면 되겠죠... while문에서
그럼...
댓글 달기