十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C语言里的gets()函数功能是从输入缓存中读取多个字符,遇到回车符时,结束输入。
东山ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输入缓存中时,gets()会读到这个字符,结束读字符操作。因此,从用户表面上看,gets()没有起作用,跳过了。
解决办法:
方法一、在gets()前加fflush(stdin);
//强行清除缓存中的数据(windows下可行)
方法二、根据程序代码,确定前面是否有输入语句,如果有,则增加一个getchar()命令,然后再调用
gets()命令。
方法三、检查输入结果,如果得到的字符串是空串,则继续读入,如:
char
str[100]={0};
do
{
gets(str);
}
while(
!str[0]
);
中间变量溢出。C语言是一种计算机程序设计语言,因为中间变量溢出导致在主函数定义好另一个函数后跳过运行的,是可以作为系统设计语言,编写工作系统应用程序。
从贴出来的代码看起来没什么问题。估计是在调用Creat函数之前输入缓冲区没有清空。在你每次调用scanf之后调用一次以下函数来清空输入缓冲区(fflush(stdin)没用):
void ClearInputBuffer()
{
int c;
while((c=getchar())!='\n');
return;
}