2013-04-15 4 views
-1
//PROBLEM NUMBER 2 
    //how to store word from pointer2char into wordList array? 

New_sentence은 문자열 (사용자가 입력 한 문장)을 포함하는 배열입니다.문자열을 별도의 부분으로 나누십시오.

pointers2charNew_sentence의 각 단어에 대한 포인터를 보유하기로되어있는 포인터 배열입니다.

함수 출력시 문자열의 첫 번째 단어 만 표시되고 프로그램이 끝납니다.

New_sentence의 모든 단어를 pointers2char에 저장하려면 어떻게해야합니까?

+0

를 해결할 생각'pointers2char :

다음을 시도 전에 그것을 strtok()의 ​​결과에 할당하십시오. – richselian

+0

'pointers2char'은 어떻게 선언되어 있습니까? –

+0

추가 정보를 추가했습니다. – DjokovicFan

답변

0

for -loop에는 i = 1부터 시작합니다. 루프의 첫 번째 반복 전에 pointers2char[i] != NULL이 평가됩니다. pointers2char[1]은 현재이 시점에서 초기화되지 않은 것이므로 NULL을 매우 잘 반환 할 수 있습니다. 결과적으로 루프에 절대 들어 가지 않습니다. `[I]

pointers2char[0] = strtok(New_sentence, " \t"); 
for (i = 0; pointers2char[i] != NULL; i++) { 
    printf("%s\n", pointers2char[i]); 
    pointers2char[i + 1] = strok(NULL, " \t"); 
} 
*nWords = i; 
+0

나는 당신이 옳다고 생각합니다 ... 내가 '!'을 제거하면, 두 번째 단어는 null을 반환합니다. 왜 이런 일이 발생하는지 잘 모르겠습니다. – DjokovicFan

+0

@ user2281397 해결책 제안을 추가했습니다. '! '는 문제가 아닙니다; 색인 생성은 –

+0

정말 고마워요! 지금 모든 단어를 반환합니다. 유일한 문제는 nWords = i 라인에 대해 "할당이 캐스트없이 정수로부터 포인터를 만듭니다"라는 경고를주는 것입니다. nWords가 포인터이기 때문입니까? – DjokovicFan

0

이 루프 사용에 문제가 이걸 당신은 초기화되지 않은 변수를 사용하여이 문제

for(i = 0; pointers2char[i] != NULL;) 
{ 
    printf("%s\n", pointers2char[i]); 
    nWords++; 
    pointers2char[++i] = strtok(NULL, "\t"); 
} 
+0

@user2281397 : nwords = i 대신 "* nwords = i"사용 – singh

관련 문제