永发信息网

c语言 gets函数没输入就结束

答案:1  悬赏:0  手机版
解决时间 2021-02-22 23:09
  • 提问者网友:城市野鹿
  • 2021-02-22 14:49
#include <stdio.h>
#include <stdlib.h>
#include<string.h>

void ju_1()
{
}
void ju_2()
{
printf("输入:I am an idiot 即可看见如下类容");
char str[100];
gets(str);
if(str=="I am an idiot")
printf("你还是笨蛋");
else printf("你是笨蛋");
}
void ju_3()
{
}

void fen()
{
int a;
int flag=0;
printf("输入1:正文;2:写;3:后记");
while (1)
{
scanf("%d",&a);
flag++;
if(a==1)
{
ju_1();
break;
}
else if (a==2)
{
ju_2();
break;
}
else if(a==3)
{
ju_3();
break;
}

}
}

void main()
{
char a[100];
fen();
printf("\n");
printf("输入1的话回到选择,输入其他就退出咯\n");
gets(a);



printf("***************全程序完毕***************");

}
问题1. 没啥没输入最后的gets(a)程序就结束了呢?
2. 如果在fen()函数里输入2 进入ju_2函数 但为什么没输入函数中的get(str)就结束了呢?
最佳答案
  • 五星知识达人网友:掌灯师
  • 2021-02-22 15:55
gets() 以前,假如有过 scanf() 语句,gets() 多半读到前面输入时,剩余在输入流中的 \n 符。
你两个问题,实质上都是这个原因。
你可以用 fflush(stdin); 清扫输入流。
例如:
printf("输入1的话回到选择,输入其他就退出咯\n");
fflush(stdin); gets(a);
其它几个gets()也这样 修改就可以了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯