strtok 를 사용한 함수에 대해서 질문입니다.
글쓴이: peac7 / 작성시간: 토, 2008/04/26 - 10:56오후
typedef struct _SHELL{
char *str[20];
int data[20];
}SHELL;
SHELL newshell[MAX_S]; //20개의 셀 생성 가능
int S_page = 0; // 현재 shell 페이지의 번호, 외부에서도 참조가능
int nOrder = 0; // 변수 개수
void comp(char *input) // 변수 입력시 변수 명과 데이타를 쉘 구조체에 저장해주는 함수.
{
int i;
extern int S_page;
extern int nOrder;
char *p1;
while(1)
{
p1 = strtok(input, " ");
if(strcmp(p1, "=") == 0)
{
strcpy(newshell[S_page].str[nOrder], p1);
newshell[S_page].data[nOrder] = atoi(strtok(NULL, " "));
return ;
}
}
}
제가 만든 함수인데 제가 구조체의 개념을 잘 이해 못하고 있는거 같습니다.
내용은 a = 1 을 입력시 a를 구조체의 str에 1은 구조체의 data에 넣어주도록 하는 것입니다.
뭐가 잘못되었는지 모르겠습니다. 좀 알려주세요 ㅠ.ㅠ
Forums:
strtok의 사용법을 잘
strtok의 사용법을 잘 모르시는듯 한데요.
에러처리 무시하고 다음을 가정한다면
main ()
{
char buf[]="a=1";
comp(buf);
}
comp는 대충
p1 = strtok(input, "=");
newshell[S_page].str[nOrder] = strdup(p1);
newshell[S_page].data[nOrder] = atoi(p1+strlen(p1)+1);
이 정도 여야 하지 않을까 합니다. while(1) {} 도 제거.
strdup한부분은 SHELL의 정의가 char* str[20]로 되어 있어서 그렇게 한겁니다. 나중에 free 해주셔야겠죠.
원하는게 char str[20]이었다면 두번째라인은
strcpy (newshell[S_page].str, p1);
정도라야 하지 않을까 합니다.
댓글 달기