C程序没有按正确的顺序执行

时间:2015-05-19 17:31:33

标签: 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都会一起完成。

为什么会这样?

1 个答案:

答案 0 :(得分:6)

您的输出正在缓冲。由于第一次打印时没有行结束,因此它将被stdout缓冲而不显示。如果有足够的字符,它会写入它,或者如果它有一个行结束,或者stdout被刷新或者它被写入一个无缓冲的流(如stderr),它可能会立即出现。

它仍然按照正确的顺序执行,但它不会立即显示。