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

New_sentence是一个数组,其中包含一个字符串(从用户输入的句子)。将字符串拆分为不同的部分

pointers2char是一个指针数组,应该保存指向每个字New_sentence的指针。

当函数输出时,只显示字符串的第一个字,然后程序结束。

如何将New_sentence中的所有单词存储在pointers2char

+0

您正在使用未初始化的变量'pointers2char [I]'然后将其分配给strtok()的结果。 – richselian

+0

如何声明'pointers2char'? –

+0

我增加了额外的信息 – DjokovicFan

回答

0

在您的for -loop中,您从i = 1开始。在循环的第一次迭代之前,对pointers2char[i] != NULL进行评估。由于pointers2char[1]很可能在此时未初始化,因此很可能会返回NULL。结果,你永远不会进入循环。

尝试以下操作:

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

非常感谢你!它现在返回所有的单词。现在唯一的问题是,它给出了一个警告:“赋值nlines = i;那是因为nWords是一个指针吗? – DjokovicFan

0

没有您的for循环使用问题this.I认为这将解决您的问题

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

@ user2281397:使用“* nwords = i”而不是nwords = i – singh