如何使用EOF停止程序代码

时间:2013-03-24 08:16:42

标签: c eof

我完成了程序的输入和处理部分,但我不知道如何使用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提前

3 个答案:

答案 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)
{
    ...
}