问题描述

scanf输入三个数,输出发现三个数都不一定输入正确!!!

#include<stdio.h>
main()
{float x = 13.14;int y  = 132456;short s  = 1;printf("请输入一个浮点型、整型、短整型数据,如13.14 1314 1\n\n");scanf("%f %d %d", &x, &y, &s);printf("%f,%d,%d\n", x, y, s);
}

输出中经常会有中间的y输入不正确,或者x末尾的小数不正确,最可怕的是三个数都不正确。如下所示

请输入一个浮点型、整型、短整型数据,如13.14 1314 1-13.15 1234 3
-13.150000 0 3

尝试过的方法

在百度搜出来大部分结果是说缓冲区未清除。。于是找各种骚操作

  1. fflush
 fflush(stdout); // 清空输出缓冲区fflush(stdin);    //清空输入缓冲区
  1. while +scanf
while( scanf("%f,%d,%d", &x, &y, &s) == 3){;}    //因为scanf每正确输入一个数据就返回1,不正确输入就返回0.
  1. 自定义清除缓冲区 safe_flush(FILE *fp)
void safe_flush(FILE *fp)
{int ch;while( (ch = fgetc(fp)) != EOF && ch != '\n' );
}
***********safe_flush(stdin);scanf("%f %d %d", &x, &y, &s);
  1. getchar
 while((x = getchar()) != '\n' && x != EOF);while((y = getchar()) != '\n' && y != EOF);while((s = getchar()) != '\n' && s != EOF);

正确姿势

 scanf("%f %d %hd", &x, &y, &s);printf("%f,%d,%hd\n", x, y, s);
数据类型 对应格式
char %c
int %d
short %hd
long %ld
float %f
double %lf
string %s

参考

初次入坑,必有错误,欢迎留言拍砖

  • https://zh.cppreference.com/w/c/io/fscanf
  • http://www.cplusplus.com/reference/cstdio

scanf %d%hd那些事相关推荐

  1. scanf 接收 空格 输入_你需要知道的scanf函数用法

    scanf函数   上一节中我们讨论了,如何将整数,浮点数,字符串打印到屏幕上去.既然有输出,怎么能没有输入呢?这一节中,我们来介绍与printf相反的scanf函数.   scanf的功能是将键盘输 ...

  2. C语言中scanf函数详解

    scanf函数   上一节中我们讨论了,如何将整数,浮点数,字符串打印到屏幕上去.既然有输出,怎么能没有输入呢?这一节中,我们来介绍与printf相反的scanf函数.   scanf的功能是将键盘输 ...

  3. C语言C Prime总结(2-7章)

    Chapter 2 ( C语言概述 ) 2.1 ''#include" 和头文件 #include<stdio.h> #include<stdio.h>相当于把std ...

  4. 学习笔记3-C语言-基础

    C语言简介 发展史:BCPL -> new B -> C -> Minix -> Linux -> gcc C语言诞生: 1970年~1973年,在肯.汤姆逊和丹尼斯.里 ...

  5. c语言程序中必不可少的,C语言程序设计(第3章程序控制语句)2

    3.2 数据的输入与输出 在程序的运行过程中,往往需要由用户输入一些数据,而程序运算所得到的计算结果等又需要输出给用户,由此实现人与计算机之间的交互,所以在程序设计中,输入输出语句是一类必不可少的重要 ...

  6. php三步运算法,小技巧----“三步翻转法”

    例:实现字符串左移函数,比如"abcdefghi"循环左移3位就是"defghiabc". #include #include #include #includ ...

  7. sstream类的详解

     sstream类的详解             sstream类详细介绍 C++引入了ostringstream.istringstream.stringstream这三个类,要使用他们创建对象 ...

  8. c 语言学习大全 值得收藏的文章

    语言学习大全 C 语言的基础语法 第一部分 软件的安装 1.推荐使用 visual studio 编辑器 2.Vc6++ 3.学校 自己教学用的软件 第二部分 入门hello world 内容 流程就 ...

  9. 数据存放、有符号、无符号整型、进制数的输入输出

    数据存放 数据在机器中是以补码的形式存放的 有符号数据:一个符号位,31个数据位,整数范围:0~31次方 原码:正数:符号位为0,数据位是自己的数据的二进制形式负数:符号位位1,数据位是自己的数据的绝 ...

最新文章

  1. 【BZOJ-1367】sequence 可并堆+中位数
  2. python读取文件第n行-python读取文件的前几行
  3. 基于Qt的光盘刻录开发
  4. 多源计算机培训,多源数据汇聚的多流形学习算法研究
  5. 俩层判断,判断button是否可以点击
  6. 软件开发 —— 过程资产与交付件
  7. 使用valgrind检查cache命中率
  8. CFS任务的负载均衡(框架篇)
  9. Nodejs 国内镜像源加速下载
  10. Maxthon2.5.10.2576 beta苦菜花增强优化防假死正式版(1031)
  11. 一家麻辣烫店如何实现月净利五万
  12. 数学中的圆周率符号怎么输入
  13. 管理打开的标签,减少Chrome95%内存 —OneTab
  14. 有哪些办法可以将ip地址更换?
  15. Android SDK官方下载地址及在线SDK网址
  16. 新品周刊 | 内马尔携手极度干燥推出内衣系列;安踏儿童与中国航天推出热返科技羽绒服...
  17. C++实现二维快速傅里叶变换(FFT)
  18. MTK 开发流程和开发环境
  19. 终于有人把云计算与数据库的关系讲明白了
  20. Python基础知识汇总和应用示例

热门文章

  1. 快速开发GD32和涂鸦CBU模组通信
  2. 五款 GitHub 上的开源字体:设计与实用的完美结合
  3. 从旺店通·企业奇门到用友BIP通过接口配置打通数据
  4. 每个IP自定义时间弹窗跳转广告代码
  5. Mac双系统切换及设置技巧
  6. 用Sybyl对3个天然产物库处理
  7. AE中TOC右键功能
  8. Geo Location 地理位置信息小结
  9. [读书笔记-3] 卓有成效的管理者-聚焦贡献
  10. 100款最佳安全工具(世界排行榜)