C语言关于getchar()的小笔记
#include <windows.h>
#include <mmsystem.h>
#include <string.h> void main()
{
int a;
char b;
float c;
printf("please input an integer:");
scanf("%d", &a);
printf("integer:%d\n", a);
printf("please input an character:");
getchar();/*将缓冲区的回车读走,如没有getchar(),scanf("%c",&b)会把回车读走,从而不能顺利输入字符型,scanf在读取字符型时需要区别对待,
因为它会读走回车,要加入getchar(),读取其他整型和float等类型时不用*/
scanf("%c", &b);
printf("character:%c\n", b);
printf("please input a float number:");
scanf("%f", &c);
printf("float:%f\n", c);
}
有getchar():的运行结果

没加入getchar():运行到输入字符串阶段发现是直接跳过的,因为scanf("%c",b)直接读取了缓冲区中的回车换行符(因为上一步我输入了12和回车换行符,12被 scanf("%d",&a);读走,所以只剩下回车换行符)
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int a;
char b;
float c;
printf("please input an integer:");
scanf("%d",&a);
printf("integer:%d\n",a);
printf("please input an character:");
scanf("%c",&b);
printf("character:%c\n",b) ;
printf("please input a float number:");
scanf("%f",&c);
printf("float:%f\n",c) ;
}

不用getchar()的解决方法,在 scanf(" %c",&b);“即%号前加个空格,他的意义是自动忽略空白字符,包括回车换行,tab,空格键这些”
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int a;
char b;
float c;
printf("please input an integer:");
scanf("%d",&a);
printf("integer:%d\n",a);
printf("please input an character:");
scanf(" %c",&b);
printf("character:%c\n",b) ;
printf("please input a float number:");
scanf("%f",&c);
printf("float:%f\n",c) ;
}
-----------------------------------------------------------------------------------------------------------------------------
相比较之下,我比较喜欢C++,不用考虑这些东西,下面是C++代码:
// Note:Your choice is C++ IDE
#include <iostream>
using namespace std;
int main()
{
int a;
char b;
float c;
cout<<"please input an integer:";
cin>>a;
cout<<"integer:"<<a<<endl;
cout<<"please input an character:";
cin>>b;
cout<<"character:"<<b<<endl ;
cout<<"please input a float number:";
cin>>c;
cout<<"float:%f\n"<<c<<endl ;
/* return 0;*/
}

scanf(" %c",&b);
C语言关于getchar()的小笔记的更多相关文章
- C语言中的调试小技巧
C语言中的调试小技巧 经常看到有人介绍一些IDE或者像gdb这样的调试器的很高级的调试功能,也听人说过有些牛人做工程的时候就用printf来调试,不用特殊的调试器.特别是在代码经过编译器一些比较复杂的 ...
- 转:【iOS开发每日小笔记(十一)】iOS8更新留下的“坑” NSAttributedString设置下划线 NSUnderlineStyleAttributeName 属性必须为NSNumber
http://www.bubuko.com/infodetail-382485.html 标签:des class style 代码 html 使用 问题 文件 数据 ...
- 小笔记:Timer定时间隔时间操作
小笔记:Timer定时间隔时间操作,后面有时间再补充和完善: public class TimingSvc { /// <summary> /// 定时器,执行定时任务 /// </ ...
- 关于 linux中TCP数据包(SKB)序列号的小笔记
关于 SKB序列号的小笔记 为了修改TCP协议,现在遇到了要改动tcp分组的序列号,但是只是在tcp_sendmsg函数中找到了SKB的end_seq 一直没有找到seq 不清楚在那里初始化了,就 ...
- Linux下postgres9.4 版本的单机版安装小笔记
1.添加RPMyum install https://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-7-x86_64/pgdg-redha ...
- 打码(C语言)常见粗心小错误 (前方高能,一定要点)
打码(C语言)常见粗心小错误 标签(空格分隔): 博客 自我介绍 本人学院 (http://sdcs.sysu.edu.cn/) 欢迎访问 本人学号 16340213 目录 打码C语言常见粗心小错误 ...
- C语言小笔记
头文件的书写 头文件实现函数声明,在使用模板后可以实现一个C文件中即使重复包含某个头文件,在系统中用于只会确认为一个包含 头文件包含可以理解为将头文件内容替换#include“...”行 模板(don ...
- C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- Go语言阅读小笔记,来自知呼达达关于unsafe.Pointer的分享.
第一式 - 获得Slice和String的内存数据 func stringPointer(s string) unsafe.Pointer { p := (*reflect.StringHeader) ...
随机推荐
- OAuth2.0概念以及实现思路简介
一.什么是OAuth? OAuth是一个授权规范,可以使A应用在受限的情况下访问B应用中用户的资源(前提是经过了该用户的授权,而A应用并不需要也无法知道用户在B应用中的账号和密码),资源通常以REST ...
- Class 'org.apache.tomcat.jdbc.pool.DataSource' not found
把项目移动到新的运行环境时,明明包都导入了,项目也放进tomcat里面了,但是还会找不到该类 解决方法:项目右键选择底下的Properties ->project facets ->jav ...
- 【一起学源码-微服务】Eureka+Ribbon+Feign阶段性总结
前言 想说的话 这里已经梳理完Eureka.Ribbon.Feign三大组件的基本原理了,今天做一个总结,里面会有一个比较详细的调用关系流程图. 说明 原创不易,如若转载 请标明来源! 博客地址:一枝 ...
- 【转】ArcGIS Server 10.1 动态图层—添加栅格
本文将介绍如何通过arcgisserver10.1动态图层添加栅格影像.与添加矢量数据不同的是,天际栅格用到了RasterDataSource接口,如下所示 <esri:DynamicLayer ...
- 详解定时任务中的 cron 表达式
1.前言 我们经常使用 cron 表达式来定义定时任务的执行策略,今天我们就总结一下 cron 表达式的一些相关知识. 2. cron 表达式的定义 cron 表达式是一个字符串,该字符串由 6 个空 ...
- Java 中级 学习笔记 2 JVM GC 垃圾回收与算法
前言 在上一节的学习中,已经了解到了关于JVM 内存相关的内容,比如JVM 内存的划分,以及JDK8当中对于元空间的定义,最后就是字符串常量池等基本概念以及容易混淆的内容,我们都已经做过一次总结了.不 ...
- python异常(理论知识)
异常 程序在运行过程当中,不可避免的会出现一些错误,比如: 使用了没有赋值过的变量 使用了不存在的索引 除0 ... 这些错误在程序中,我们称其为异常. 程序运行过程中,一旦出现异常将会导致程序立即终 ...
- spark和mapreduce的区别
spark和mapreduced 的区别map的时候处理的时候要落地磁盘 每一步都会落地磁盘 reduced端去拉去的话 基于磁盘的迭代spark是直接再内存中进行处理 dag 执行引擎是一个job的 ...
- hdfs断电报错解决
一,/home/hadoop/tmp/dfs/name/current 目录下查看文件二,1.stop hadoop所有的服务;2.重新格式化namenode即可: hadoop根目录下: hadoo ...
- Activiti 手工任务(manualTask)
Activiti 手工任务(manualTask) 作者:Jesai 前言: 手工任务就是一个自动执行的过程.手动任务几乎不在程序中做什么事情,只是在流程的历史中留下一点痕迹,表明流程是走过某些节点的 ...