【问题标题】:printf() doesn't show up first [duplicate]printf() 没有首先出现[重复]
【发布时间】:2020-10-05 22:26:07
【问题描述】:

我的代码:

#include <stdio.h>

#define SPITZE          1
#define GUT             2
#define BEFRIEDIGEND    3
#define AUSREICHEND     4
#define DURCHGEFALLEN   5
#define JA              1
#define NEIN            0

int main (void)
{

    unsigned int note, bestanden;

    printf ("\nGeben Sie bitte eine Note (1-5) ein: ");
    scanf ("%u", &note);

    if (note == SPITZE)
        bestanden = JA;
    else if (note == GUT)
        bestanden = JA;
    else if (note == BEFRIEDIGEND)
        bestanden = JA;
    else if (note == AUSREICHEND)
        bestanden = JA;
    else
        bestanden = NEIN;

    bestanden ? printf ("\nOK!,") : printf( "\nNICHT bestanden");
    return 0;
}

所以控制台甚至不会先打印出文本 printf ("\nGeben Sie bitte eine Note (1-5) ein: "); 。文本不会显示,直到我输入一个数字然后它直接打印出“printf & the result”。

我怎样才能让它打印出来才能看到呢?

【问题讨论】:

    标签: c printf


    【解决方案1】:

    您可以在printf() 之后使用fflush(): 其目的是清除(或刷新)输出缓冲区并将缓冲的数据移动到控制台(在stdout 的情况下)或磁盘(在文件输出流的情况下)。

    【讨论】:

    • 我可以举个例子,因为我试过了,但它仍然不起作用。我想看看我是否正确
    【解决方案2】:

    当使用像printf 这样打印到stdout 的函数时,在某些系统上,您可能需要“刷新”缓冲区以使项目出现在屏幕上。

    这通常通过在每个printf 的末尾添加一个\n 来完成,但您也可以通过调用fflush(stdout) 来明确地做到这一点。

    【讨论】:

    • \n 在这种情况下不好,因为他想让光标刚好超过提示符
    【解决方案3】:

    printf 已缓冲,因此您应该在 scanf 之前刷新它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多