C程序执行顺序不正确

休兹

我的代码中有一些函数需要一段时间才能执行,例如计算大文件中的单词数。我想向用户显示这样的输出:

calculating word number ...

执行功能然后打印: calculating word number ... OK

为此,我的主要任务是:

int main(int argc, char * argv[])
{
    int number_of_words;
    FILE * dico = NULL;
    dico = fopen(argv[1],"r+");

    printf("calculating word number ...");
    number_of_words = number(dico);
    printf("OK\n");

    return 3.14;
}

计算单词数的函数是:

int number(FILE * dico)
{
    int n=0;
    char mot[20];

    rewind(dico);

    while (fgets(mot, 20, dico) != NULL)
    {
        n+=1;
    }

    return n;
}

在为一个非常大的文件执行输入功能之后,输出似乎没有人照看。实际上,等待时间是第一次之前printf("calculating word number ...");,然后在结束时,所有这些printf都一起完成。

为什么会这样?

埃里克·雷诺夫

您的输出正在缓冲。由于在您的第一次打印中没有行结尾,因此它正在由stdout缓冲并且不显示。如果有足够的字符,它将写它,或者它的行尾,或者刷新了stdout,或者将其写入了无缓冲流(如stderr),它可能会立即显示出来。

尽管它仍在以正确的顺序执行,但是它并没有立即显示内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章