最新消息:历时半年,永住昨天下来了

Eclipse下printf和scanf的运行顺序问题

在写一个C语言时,运行时发现scanf比printf先执行了,在网上找了一下资料,原来是输出缓冲区的问题。解决方法有两个,第一,设置缓冲区为空,即没有缓冲区;第二,每执行printf之后,强制缓冲区。具体方法如下:

  1. 在printf之前添加: setvbuf(stdout,NULL,_IONBF, 0);设置缓冲区为空。
  2. 在每句printf之后添加:fflush(stdout);

测试代码如下:

方法一:

C
#include

int main(void) {
    setvbuf(stdout,NULL,_IONBF,0);

    char aa[20];
    printf ("input:");
    scanf("%s", aa);
    printf ("output:%s", aa);
    return 0;
}

方法二:

C
#include <stdio.h>

int main(void) {
    char aa[20];
    printf ("input:");
    fflush(stdout);
    scanf("%s", aa);
    printf ("output:%s", aa);
    fflush(stdout);
    return 0;
}

转载请注明:宇托的狗窝 » Eclipse下printf和scanf的运行顺序问题

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址