习惯用notepad++写代码,用NppExec插件编译执行程序。但总遇到一个奇怪的问题:
虽然printf语句在前,但总是到程序结束才执行printf语句,比如一个求最大公约数的程序:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int gcd (int a,int b)
{
if(b==0)
return abs(a); //约数为正?
else
return gcd(b,a%b);
}
int main(int argc, char* argv[])
{
printf("input a and b: ");
int a,b;
scanf("%d%d",&a,&b);
printf("%d",gcd(a,b));
system("pause");
}
NppExec Console中执行的结果:
printf提示内容和输出结果到了最后才执行。换到mintty终端下,和上面的情况类似:
直到最近遇到mintty中不能输入sshkey密钥,才注意到mintty在windows中的局限性,或许也是因为mintty不能运行windows交互程序才导致的执行顺序错误。
不用mintty,直接用msys的终端,得到的结果是正确的:



严格说来,不是 MinTTY 的毛病,而是原本的程序写得不严谨,提示还在缓冲区中未输出。
在 printf 和 scanf 之间插入 fflush(stdout); 否则使用 C++ 的 cout 和 cin。
试了一下,确实是这样,多谢指点
还有一个问题,为什么cmd里面就正常了呢?
有没有人告诉你,图片全是你的防盗链图片……
还真没人告诉过我... 已经注释掉防盗链代码了