同样是做大一小孩的作业
有一道题是要求输入10本图书信息,并查找指定书名和价格高于某个数值的图书信息。

#include<stdio.h>
#include<string.h>
struct Book{int id;char name[50];char author[10];double price;
};
bool is_book(char str[],Book a){if(strcmp(str,a.name)==0)return 1;else return 0;
}bool higher_price(Book a,double b){if((a.price - b) > 0) return 1;else return 0;
}int main(){Book book[10];char a[50];double price;int i,j=0;printf("请依次输入10本图书的书号、书名、作者、价格:\n");for(i=0;i<10;i++){scanf("%d%s%s%lf",&book[i].id,&book[i].name,&book[i].author,&book[i].price);}printf("请输入书名:\n");//fflush(stdin);gets(a);printf("该图书信息为:\n"); for(i=0;i<10;i++){if(is_book(a,book[i]))printf("书号:%d\t书名:%s\t作者:%s\t价格:%.2lf\n",book[i].id,book[i].name,book[i].author,book[i].price);}printf("请输入价格:\n");scanf("%lf",&price); printf("高价图书信息为:\n");for(i=0;i<10;i++){if(higher_price(book[i],price))printf("书号:%d\t书名:%s\t作者:%s\t价格:%.2lf\n",book[i].id,book[i].name,book[i].author,book[i].price);} return 0;
}

使用gets()函数接收书名
但是在运行的时候,gets函数没有执行,被跳过执行后面的语句了。

后来找到答案是因为:
之前scanf的时候,会遗留一个’\n’在缓冲区里,
因此,gets()误将这个回车作为了它的输入。
应在gets函数之前使用,fflush(stdin);清空默认缓冲区
(使用stdin,不是自己定义的gets(a)数组的数组a)

修改之后:

 printf("请依次输入10本图书的书号、书名、作者、价格:\n");for(i=0;i<10;i++){scanf("%d%s%s%lf",&book[i].id,&book[i].name,&book[i].author,&book[i].price);}printf("请输入书名:\n");fflush(stdin);gets(a);

结果正确:

【c语言】 gets()函数不执行/被跳过相关推荐

  1. c语言如何让函数一直执行,C语言如何实现在每天某个特定时间执行某个函数?

    慕仙森 Windows提供了定时器,帮助编写定期发送消息的程序.定时器一般通过一下两中方式通知应用程序间隔时间已到.⑴ 给指定窗口发送WM_TIMER消息,也就是下面的给出在窗口类中使用的方法.⑵ 调 ...

  2. c语言使用free释放指针报错,C语言中的free函数用法执行机制分析

    free函数是C语言或者C++程序语言的常用函数,那么free函数有什么用途呢?free函数又怎么用呢?C语言中的free函数用法执行机制分析,一起来看看free内部的机制以及和delete的对比分析 ...

  3. 在 main 函数之前执行代码(C 语言)

    main 函数 又称主函数,是程序执行的起点. 在 main 函数之前 那么,我们有办法在 main 函数之前执行代码吗? 答案是肯定的. 先上代码 before_main.c #include &l ...

  4. C语言调用函数一次就自动结束了 不执行下面的程序 帮忙看看把

    我自己定义了一个打印print函数 ,在主程序中如果把这个print函数放在其他函数前执行了 程序直接就运行结束了 不执行在他后面的程序 .有人能看看这是什么原因吗?

  5. C语言atoi()函数用法

    C语言atoi()函数用法 头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * s ...

  6. 一起学习C语言:函数(三)

    上一篇<一起学习C语言:函数(二)> 中,我们了解了内部函数和外部函数,以及变量的声明周期与作用域.本章节,我们分析函数的存储类别与声明方式,以及函数的递归调用原理. 章节预览: 6. 变 ...

  7. 一起学习C语言:函数(二)

    上一篇<一起学习C语言:函数(一)> 中,我们了解了函数的概念,以及函数实现与程序编译过程.本章节,我们分析内部函数和外部函数,以及变量的生命周期. 章节预览: 4. 外部函数与内部函数 ...

  8. C语言—字符串函数和内存函数

    文章目录 1.前言 2.字符串函数 2.1 长度不受限制的字符串函数 2.1.1 strlen 内部细节 使用方法 模拟实现 2.1.2 strcmp 内部细节 使用方法 模拟实现 2.1.3 str ...

  9. 51单片机c语言编程函数,单片机C语言教程:C51函数

    其实一直出现在例子中的 main()也算是一个函数,只不过它比较特殊,编译时以它做为程序的开始段.有了函数C 语言就有了模块化的优点,一般功能较多的程序,会在编写程序时把每项单独的功能分成数个子程序模 ...

最新文章

  1. CFString​Transform
  2. python列表的切片操作
  3. Shell之awk常用用法
  4. [development][PCRE] old PCRE
  5. Android中当item数量超过一定大小RecyclerView高度固定
  6. linq group by 多个字段取值以及取出重复的数据
  7. ASP.NET C# 文件下载速度限制
  8. 同花顺 sendmessage python_进程通信-SendMessage使用方法
  9. Ribbon和Feign的对比-带简易例子
  10. 出租车轨迹数据地图匹配
  11. 常用生物信息学格式介绍
  12. 微信小游戏(字节小游戏、QQ小游戏)如何实现强制更新版本
  13. 专家全方位剖析网页木马
  14. SecureCRT8.3.3软件包百度网盘
  15. UML用例图-软件需求分析与设计(很详细,很详细,很详细)
  16. 在网页上实现大华视频监控摄像头在线
  17. 【详解】为何三元一次方程可以表示一个平面
  18. 实验一:鸢尾花数据集分类
  19. android 5.x—Elevation阴影
  20. 基于卷积神经网络CNN的电影推荐系统

热门文章

  1. PAT乙级(1004 成绩排名)
  2. python 字符串替换换行,Python fstring:替换换行符/lineb
  3. Oracle 19c集群重装步骤详解
  4. 连载四:Oracle升级文章大全(完结篇)
  5. 详述WebLogic反序列化远程命令执行漏洞的处理过程,云和恩墨技术通讯精选
  6. 区块链交易隐私如何保证?华为零知识证明技术实战解析
  7. 小熊派开发板实践:智慧路灯沙箱实验之真实设备接入
  8. 【华为云技术分享】小白学YOLO:一文带你学YOLOv1 Testing
  9. 云图说|SAP技术画册“一点通”
  10. SpringBoot之Thymeleaf