一个C语言问题。。谢谢
还有一个问题
第一个:
#include<stdio.h>
#include<string.h>
int main()
{
char a[90];
int i;
scanf("%d",&i);
scanf("%s",a);
printf("%d\n",i);
printf("%s\n",a);
return 0;
}
第二个:
#include<stdio.h>
#include<string.h>
int main()
{
char a[90];
int i;
scanf("%d",&i);
/*这里出了问题,当我输入i的值后,按一个回车,程序就结束了,但我还没有输入a啊,求高手指导,谢谢*/
gets(a);
printf("%d\n",i);
printf("%s\n",a);
return 0;
}。。。。。。。。。。。。为什么第一个程序没问题而第二个却有问题呢?/*这里出了问题,当我输入i的值后,按一个回车,程序就结束了,但我还没有输入a啊,求高手指导,谢谢*/
[解决办法]
scanf的问题
以后使用scanf在其后家getchar();或fflush(stdin)
[解决办法]
第二个问题是缓冲区的问题,因为你输入了i值后按回车,那么'\n'就留在了缓冲区中,造成你gets的时候获取了'\n',而结束,你可以在gets前加个getchar();
[解决办法]
另外一个帖子不能发言了,最多连续三次。。。继续另外的帖子:也就是说gets会接收到缓冲区中的回车然后认为是输入结束
[解决办法]
而scanf不接受缓冲区的回车,直接跳过继续输入