app图标颜色:c语言中gets()在函数中时,为什么不等输入字符串就往下运行?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 19:50:08
gets()在函数中时,为什么不等输入字符串就往下运行啊?
我的程序是:
#include<stdio.h>
#include<stdlib.h>

void input();
void statistics();
FILE *fp;
void main()
{
int i;
char q;
do
{
printf("please select function:input(1),statistics(2)?");
scanf("%d",&i);
if(i==1)
input();
else if(i==2)
statistics();
printf("continue?(y/n) ");
scanf(" %c",&q);
}while(q=='y');

}
void input()
{
char b[90];
printf("Please input some characters:");
gets();
if((fp=fopen("d://statistics.txt","a"))==NULL)
{
printf("cann't open file.");
exit(1);
}
printf("%s",b);
fputs(b,fp);
fclose(fp);
}
void statistics()
{
}

gets();前加一句fflush(stdin);

gets()应该是gets(b);吧,前面再加一句fflush(stdin),作用是清空输入缓冲;
你选择1,2后输入了一次回车,输入缓冲里被放入了一个'\n',实际上gets()读了个空串,而不是没执行

试试b=gets();

函数调用都错了