在git-bash中执行ac程序时提示在print语句之前

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (45)
For example :
#include<stdio.h>
int main ()
{
int i,N;
printf("Enter row no.\n");
scanf("%d",&N);
for(i=0;i<N;i++)
printf("%d\n",i);
return 1;
}

在命令提示符下执行是按顺序执行的,但是当我在git bash中执行它时,首先我需要输入行号,然后显示“输入行号”文本,然后显示模式的其余输出。我只是不明白为什么scanf在git中的printf之前被执行了。

提问于
用户回答回答于

您可以尝试定义一个名为“eprint”的宏,在调用printf(...)后添加flush(),我只需使用下面的eprint宏:

#define eprintf(...) printf(__VA_ARGS__); \
                     fflush(stdout);      \

示例代码:

#include <stdio.h>
#include <stdlib.h>

#define eprintf(...) printf(__VA_ARGS__); \
                     fflush(stdout);      \

int main(void) {
    int a;

    eprintf("a=");

    scanf("%d",&a);

    eprintf("I've read value %d.\n",a);

    return EXIT_SUCCESS;
}
用户回答回答于

事实并非如此。只是printf输出被缓冲了

如果你想先强制输出scanf然后刷新输出缓冲区: fflush(stdout);将这样做。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励