我完成了程序的输入和处理部分,但我不知道如何使用EOF终止程序。这是我的int main(void)代码:
int main(void)
{
int size;
int n;
char preorder[26];
char inorder[26];
while(/* I don't know what to put on this part...*/)
{
for(n = 0; n < maxSize; n++)
{
preorder[n] = ' ';
inorder[n] = ' ';
}
preIndex = 0;
scanf("%s %s", preorder, inorder);
size = strlen(preorder);
struct node *root = constructTree(inorder, preorder, 0, (size - 1));
printPostorder(root);
printf("\n");
}
return 0;
}
每个功能都运行正常,我已经单独检查过它们。基本上用户希望通过按Ctrl + Z结束此程序(我在Windows上工作,所以它是Z)。我必须使用EOF。 Thx提前
答案 0 :(得分:3)
检查输入功能的返回值。 scanf
将返回存储的项目数或EOF(如果遇到文件结尾)。
正如Anthon所说,您可以使用while(1)
作为循环控件,并使用break;
退出循环。
while(1) {
if (scanf(...) == EOF)
break;
}
不要试图使用名为feof()
的函数,因为它只检查FILE结构中的标志,即。只有在您尝试阅读之后才能检测到EOF 。但是,它可以用在多层错误处理结构中。
while(1) {
if (scanf(...) < N_elements_specified) {
if (feof(...)) {
/* EOF detected */
break;
} else {
/* some other cause of insufficient data */
}
}
}
答案 1 :(得分:2)
你想做类似的事情:
while (scanf(...) != EOF) {
}
答案 2 :(得分:-1)
您可以添加cin
并从preorder
获取输入,而preorder
还剩下字符:
while (cin >> preorder)
{
...
}