strstok 함수 구현에 관한 질문입니다.
파이팅
char* user_strtok(char *str, char *token)
{
static int i=0;
int j,address;
if(str!=NULL)
i=0;
else
i++;
address=i;
for( ;istrlen(str) ;i++)
{
for(j=0;jstrlen(token);j++)
{
if(str[i]==token[j])
{
str[i]=0;
break;
}
}
if(str[i]==token[j])
break;
}
return &str[address];
}
위와 같이 strtok와 같은 기능을 하는 함수를 구현하고
main함수에서
printf(Token = );
printf(\%s\, user_strtok(s1, s2));
while ((token = user_strtok(NULL, s2)) != NULL)
printf( \%s\, token);
와 같은 식으로
호출하였습니다.컴파일상에는 에러메세지 뜨지 않고 성공하였는데실행시켜보면 첫번째 토큰은 제대로 뜨는데, 그 다음에 에러가 뜨면서 프로그램이 강제종료가 되버립니다.그렇다는 얘기는 첫번째 호출에선 문제가 없는데두번째 호출부터 문제가 생긴다는 얘기 같은데저로서는 뭐가 문제인지 못찾겠네요 ㅠㅠ이거에 대해 알려주시면 정말정말 감사하겠습니다
-
맞빨이
위와 같이 코드를 짠뒤에
i am a computer programmar을 입력했더니
\i\ \am\ \a\ \computer\까지로 분리되어나옵니다.
마지막 programmar부분은 토큰을 찾아낼수 없기때문에
출력되지 않는것 같습니다.
저 맨처음 for문의 *ptr을 ptr로 바꾸었더니
programmar까지 출력되기는 하던데,
프로그램이 상당히 오랜 시간이 걸린 뒤에서야
계속하려면 아무 키나 누르십시오
이 문구가 나오더라구요.
이게 정상적으 -
푸헷
char* user_strtok(char *str, char *token)
{
\tstatic char * ptr=NULL;
\tint j;
\tchar * address;
\t
\tif(str)
\t ptr=str;
\telse
\t ptr++;
\taddress=ptr;
\tfor( ; *ptr ;ptr++)
\t{
\t\tfor(j=0 ;token[j];j++)
\t\t{
\t\t\tif(*ptr==token[j])
\t\t -
큰말
두번째 호출부터는 str 인자가 NULL 인데,
함수에서는 전달받은 NULL에 첨자 [i] 을 붙이기 때문에 에러가 납니다.
static int i = 0; 으로 할 것이 아니라,
static char *s = NULL; 로 하셔서
if(str) s = str;
형태로 하세요.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2693387 | 배열문제입니다 수정오류캡쳐했습니다 (6) | 연하얀 | 2025-05-01 |
2693356 | text 입출력 내림차순 질문입니다 ㅠ | 빛글 | 2025-05-01 |
2693328 | C언어를이용해서 .txt파일 외에 다른 확장자 파일 삭제가 가능한지.. (2) | 대나무 | 2025-05-01 |
2693299 | 파일입출력 바이너리파일 | 독특한 | 2025-04-30 |
2693273 | 오류 (1) | 귀1여운렩 | 2025-04-30 |
2693080 | visual studio 2008 express edition 등록키 말인데요 | 얀별 | 2025-04-28 |
2693053 | 배열, 구조체 관련 프로그래밍 질문드립니다. | 싸리 | 2025-04-28 |
2693025 | 프로그램을 짜봤는데요 ㅠㅠ | 상처입은마음 | 2025-04-28 |
2693001 | 워닝문제, 세그멘트결함문제 (1) | 월식 | 2025-04-28 |
2692979 | 라인한줄 이랑.. 소스 설명좀 부탁드려요.. | 이루리 | 2025-04-27 |
2692947 | 이 문제좀 풀어 주세요..ㅜㅜ (1) | 소리 | 2025-04-27 |
2692889 | 함수의 구조체 인자로 받아서 그 인자로 데이터 넣기... | 한뎃집 | 2025-04-27 |
2692862 | 성적 출력 하는 프로그램인데요~!!!도움좀 주세욤.ㅠ | 두빛나래 | 2025-04-26 |
2692831 | if 문 간단해요 빨리좀 ㅠㅠ | 이플 | 2025-04-26 |
2692805 | 실행파일이 이상해요 | 푸헷 | 2025-04-26 |
2692750 | 퀵정렬 질문이요 . | 동생몬 | 2025-04-25 |
2692700 | 이 소스코드에 문제 있나요?? (2) | 초코초코해 | 2025-04-25 |
2692596 | 오류좀 잡아주세요 | 하나 | 2025-04-24 |
2692510 | 함수형 중에서.. (6) | 한란 | 2025-04-23 |
2692483 | C언어 함수, Header | 떠나간그놈 | 2025-04-23 |