printf为什么不输出?
- C/C++ code
#include <stdio.h>#define N 10int main(int argc, char *argv[]){ int i=0,p,q,t,id[N]; for (i=0; i < N; ++i) { id[i]=i; } while(scanf("%d %d\n",&p,&q)==2) { if(id[p]==id[q]) continue; for(t=id[p],i=0;i<N;++i) { if (t==id[i]) { id[i]=id[q]; } } printf("%d %d\n",p,q); //在gcc中为什么这条语句不输出任何东西? } return 0;}用vs2008的时候就正常。
还有就是为什么输入两对数值之后,才开始运行while里的语句?
[解决办法]
错误在这: while(scanf("%d %d\n",&p,&q)==2)
scanf不需要在format字符串后面添加上'\n'。这样就会出错。去掉就可以了。主要是因为回车键是作为输入结束的标志,你把回车键作用给费掉了。导致scanf不知道什么时候是结束的。
[解决办法]
你看有没有运行到那里
scanf之后立即检查其返回值,p和q的值
[解决办法]
因为有缓冲,fflush(stdout)
[解决办法]