标题:gets()函数会被屏蔽吗?
只看楼主
武乐飞
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-4-1
结帖率:100%
 问题点数:0 回复次数:4 
gets()函数会被屏蔽吗?
/*
程序功能:输入一个日期,显示是本年的第几天?并且可以连续循环实现功能!
问题:为何疑问处(见注释)使用一个gets函数无法实现?
*/
#include<stdio.h>
#include<windows.h>
#include<string.h>
struct
{
   int year;
   int month;
   int day;
}date;
int main()
{
    int days;
    char b[5]="stop";
    char a[5];
    while(1)
    {
      printf("请输入操作指令(stop  or  action)\n");
      gets(a);                                     /*这里是疑问处*/
      /* 在加上一个gets()函数就行了,为什么??*/
      if(strcmp(a,b)==0)
      {printf("程序结束!!\n");break;}
      printf("input year,monht,day:");
      scanf("%d,%d,%d",&date.year,&date.month,&date.day);
      switch(date.month)
        {
        case 1:days=date.day;       break;
        case 2:days=date.day+31;    break;
        case 3:days=date.day+59;    break;
        case 4:days=date.day+90;    break;
        case 5:days=date.day+120;   break;
        case 6:days=date.day+151;   break;
        case 7:days=date.day+181;   break;
        case 8:days=date.day+212;   break;
        case 9:days=date.day+243;   break;
        case 10:days=date.day+273;  break;
        case 11:days=date.day+304;  break;
        case 12:days=date.day+334;  break;
        }
    if((date.year%4==0)&&(date.year%100!=0)||(date.year%400==0)&&(date.month>=3))
    {
        days+=1;
    }
    printf("您所输入的日期属于%d的第%d天\n",date.year,days);
    }
system ("pause");
return 0;


}
搜索更多相关主题的帖子: include action 
2015-04-03 22:54
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
主要原因在scanf函数。
scanf函数会在碰到空格、回车时自动接受数据,并把空格和回车遗留在输入流缓冲区里,这个遗留的空格或回车会被下一次的gets函数取到,如是就直接过了。在scanf后清空下输入流缓冲区应该就可以了,如下:
      scanf("%d,%d,%d",&date.year,&date.month,&date.day);
      setbuf(stdin, NULL);/*清空缓冲区*/

能编个毛线衣吗?
2015-04-04 06:59
武乐飞
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-4-1
得分:0 
谢谢,完美解决了问题!
2015-04-04 22:36
谦逊小子
Rank: 2
等 级:论坛游民
帖 子:20
专家分:44
注 册:2014-10-10
得分:0 
我想问一下在循环体中用gets()函数怎么会提示出错呢?
2015-04-05 22:50
武乐飞
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-4-1
得分:0 
gets()函数前面有scanf()吗?
2015-04-07 22:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-443519-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.169391 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved