求大神解决关于同一语句不同程序中结果不同的有关问题
求大神解决关于同一语句不同程序中结果不同的问题
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
main()
{
long long T,i,s;
char c;
scanf("%lld",&T);
getchar();
while(T--)
{
s=0;
i=0;
while((c=getchar())!=' ')
s+='c'-48;
scanf("%*[^\n]%*c");
while((c=getchar())!='\n')
s+='c'-48;
printf("%lld\n",s-48);
}
}

这种情况要连输2个空格才有输出。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
main()
{
long s;
char c;
while((c=getchar())!='\n')
s+='c'-48;
printf("%lld\n",s-48);
}

而这种情况只需输一个回车就可以输出
请问是什么导致的
小弟是菜鸟 求大神指教
------解决思路----------------------
字符缓冲区的问题。
------解决思路----------------------
自己调试跟踪就明白了
注意getchar()的值
------解决思路----------------------
fflush(stdin)
fflush(stdout)
试一下
------解决思路----------------------
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
main()
{
long long T,i,s;
char c;
scanf("%lld",&T);
getchar();
while(T--)
{
s=0;
i=0;
while((c=getchar())!=' ')
s+='c'-48;
scanf("%*[^\n]%*c");
while((c=getchar())!='\n')
s+='c'-48;
printf("%lld\n",s-48);
}
}
这种情况要连输2个空格才有输出。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
main()
{
long s;
char c;
while((c=getchar())!='\n')
s+='c'-48;
printf("%lld\n",s-48);
}
而这种情况只需输一个回车就可以输出
请问是什么导致的
小弟是菜鸟 求大神指教
------解决思路----------------------
字符缓冲区的问题。
------解决思路----------------------
自己调试跟踪就明白了
注意getchar()的值
------解决思路----------------------
fflush(stdin)
fflush(stdout)
试一下
------解决思路----------------------
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。