포인터 배열을 사용해서 토큰을 출력하려고 하는데 잘 안됩니다 ㅠㅠ
글쓴이: kykk0010 / 작성시간: 화, 2014/12/30 - 2:09오후
#include
#include
#include
int main(void)
{
char s1[50];
char s2[10][50];
char *token[10];
char *context;
int i = 0;
printf("문자열을 입력하시오:");
gets_s(s1);
token[0] = strtok(s1," ");
while(token !=NULL)
{
printf("토큰 :%s\n", token[i]);
token[i] = strtok(NULL," ");
i++;
}
return 0;
}
도대체 어떻게 된 건지 이유를 모르겠네요 ㅠㅠ
Forums:
돌려보지는 않았는데 두 군데 잘못된 것 같네요.
돌려보지는 않았는데 두 군데 잘못된 것 같네요. 첫번째는 while 조건 문에서 token은 token[i]여야 할 것 같고 i++는 그 앞 문장보다 먼저 와야 할 것 같습니다.
그래도 안되네요 ㅠㅠ
그래도 안되네요 ㅠㅠ
"그래도"라고 쓰지 말고 자기가 수정한 코드를 정확히
"그래도"라고 쓰지 말고 자기가 수정한 코드를 정확히 적으세요. 질문자가 정말 제대로 수정했는지 아닌지 답변하는 사람이 확인하도록.
"안되네요"라고 쓰지 말고 도대체 뭐가 어떻게 안 된다는 건지 적으세요. 컴파일 에러가 나는 건지, 실행할 때 오류가 나는 건지, 오류 메시지는 무엇인지, 오류는 안 나는데 동작이 원하는 대로 안 된다면 어떤 입력을 주었는지.
저는 윗분의 답글대로 고쳐서 아주 잘 되는 걸 확인했는데, 저는 gcc 를 쓰느라 gets_s 를 gets 로 바꿔썼습니다.
gets_s 는 인자로 버퍼의 크기도 같이 주어야 할 텐데, gets_s( s1, 50 ) 이런 식으로 한 번 고쳐보시죠.
좋은 하루 되세요!
감사합니다!!
제가 그동안 잘못 답글을 달았었네요 ㅠㅠ 죄송합니다
다행히 아래 주석에 달린 것과 같이 수정해서 잘 작동되었습니다!
#include
#include
#include
int main(void)
{
char s1[50];
char *token[10];
char *context;
int i = 0;
int j ;
printf("문자열을 입력하시오:");
gets_s(s1);
token[0] = strtok_s(s1," ",&context);
while(token[i] != NULL)
{
i++; \\반복구문에서 i값을 먼저 증가시킴
token[i] = strtok_s(NULL," ",&context);
}
printf("%d\n", i);
j= i;
for(i= j-1 ; i>=0 ; i--)
printf("%s ", token[i]);
return 0;
}
댓글 달기