我使用带有while循环的strtok()
函数进行编译,但是在while循环之后的任何东西似乎都不存在于编译器中:
int main()
{
int j = 1;
char a[60] = "ion ana adonia doina doinn ddan ddao . some other words ";
char *pch[36];
pch[0] = strtok(a, ".");
while (pch[j + 1] != NULL)
{
cout << pch[j - 1] << endl;
pch[j] = strtok(NULL, ".");
j++;
}
cout << "hello!"; //this doesnt display at all
return 0;
}
我正在使用无c。
答案 0 :(得分:3)
除此之外,你的while循环结束条件是错误的。你正在检查pch[j + 1]
,它总是未初始化的内存,导致循环不可预测地继续,直到你在内存中遇到零,这可能导致循环停止。
另一方面,由于其字符串破坏,我高度不鼓励在C ++中使用strtok
。 Boost有一个非常好的字符串解析工具,即使在基本的C ++语言中,它也足够简单,可以使用内置的字符串功能进行大多数解析。
答案 1 :(得分:0)
你的代码很奇怪。试试这个:
int main()
{
int j = 0;
char a[60] = "ion ana adonia doina doinn ddan ddao . some other words ";
char *pch[36];
pch[j] = strtok(a, ".");
while (pch[j] != NULL)
{
cout << pch[j] << endl;
pch[++j] = strtok(NULL, ".");
}
cout << "hello!"; //this doesnt display at all
return 0;
}