C语言使用scanf()函数时,%c前面和后面分别加上空格后的结果

     在使用scanf()读取输入的字符时,当转换说明为%c时,"%c"、"  %c"、"%c  " 这三种不同的写法,对数据读取的结果有什么影响吗,答案是肯定的,%c 加不加空格,空格在前还是在后,结果是不同的。

1、先来看看%c前后都不加的情况,看一个简单的程序:

#include<stdio.h>
int main(void)
{
    
    char ch;
    printf("enter a word for ch.\n");
    scanf("%c",&ch);
    printf("The word you entered is *%c*\n",ch);
    
    return 0;
    
}

在这个程序当中,scanf()会读取你输入的第一个字符,不管这个字符是空格  回车符 还是单个字符,它只读取第一个,不管这个字符时什么,例如:

输入空格的结果:

输入 回车符  的结果:

输入一个字符的结果:

2、我们再来看一下"  %c" 即%c前面加空格的情况,看下面的程序:

#include<stdio.h>
int main(void)
{
    
    char ch;
    printf("enter a word for ch.\n");
    scanf(" %c",&ch);
    printf("The word you entered is *%c*\n",ch);
    
    return 0;
    
}

这里如果在输入字符时,如果在前面先输入  空格  或者回车符,它会跳过这些空白符(空格和回车)直到遇到以一个非空白符。

例如我们输入   多个空格+c  , 则输出的结果如下:

这里我在c 的前面输入了5个空格,但是scanf跳过了这些空格,直到遇到c,读取的是c。

如果在c前面输入多个回车也是如此,结果如下:

尽管c前面有多个回车符,但是scanf都跳过去了,直到遇到c,读取c。

总之,空格放在%c前面,在读取时,scanf会跳过前面的空白字符,直到非空白字符而读取的是非空白字符。

3、我们再来看看"%c  "即空格在%c之后的情况,程序如下:

#include<stdio.h>
int main(void)
{
    
    char ch;
    printf("enter a word for ch.\n");
    scanf("%c ",&ch);
    printf("The word you entered is *%c*\n",ch);
    
    return 0;
    
}

这里,当你输入一个字符之后,程序会等待你输入第二个非空白字符(注意,会跨过第二个非空白字符前的空格和回车符),程序才会进入下一步,而scanf()读取的却是你输入的第一个字符。

例如,我们首先输入字符c,程序并未进入下一步,还在等待输入,我们输入多个空格和回车,依旧如此,当输入字符b之后,进入下一步,运行结果scanf()读取的是第一次输入的c.

再看一个例子,如果第一个字符是空格  ,中间在回车  多个空格之后,输入字符d,结果是怎样呢,如下:

最终scanf()读取的是第一次输入的   空格。

这就是在用scanf()输入字符时,  %c 前后加不加空格,所带来的异同。 

这里顺便说一下  %d 的情况,%d 前面无论加不加 空格, scanf()都会跳过空白字符(空格和回车),直到非空白字符。

%d 后面加空格的情形,就和%c后面加空格的情形一样了,也需要输入两次,然后读取的是 前一次的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python -- 自动导入所需要的模块

try: import xlwtexcept ImportError as e:   import os   print(e)   os.system("pip install xlwt")转载于:https://www.cnblogs.com/xlx12138/p/10551894.html

借助Apache Hadoop大规模扩展Apache Solr实时实时索引

播客的第22集是与Patrick Hunt的谈话 我们讨论了Apache Solr&#xff08;上游&#xff09;中的新工作&#xff0c;使它可以在Apache Hadoop上工作。 Solr支持将其索引和事务日志文件写入和读取到HDFS分布式文件系统。 这不使用Hadoop Map-Reduce处理Solr数据&#xff0c;而是仅…

linux查看用户、创建用户、设置密码、修改用户、删除用户命令

查看用户 tail -1 /etc/passwd tail -1 /etc/shadow id alex echo 123 |passwd --stdin alex # 设置密码&#xff0c;不需要交互[rootlocalhost ~]# tail -l /etc/passwd rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS …

去除git版本控制

命令&#xff1a;find . -name ".git" | xargs rm –Rflinux $ find . -type d -iname __pycache__ -exec rm -rf {} \;转载于:https://www.cnblogs.com/gispathfinder/p/10555347.html

如何在Java中找到整数的质因数–因式分解

编程课程中的常见家庭作业/任务之一是关于Prime Factorization。 要求您编写一个程序以找到给定整数的素因子 。 一个数字的质数因子是将精确地除以给定数字的所有质数。 例如&#xff0c;35的素数因子分别是7和5&#xff0c;它们本身都是素数&#xff0c;并且精确地除以35。上…

Arduino Serial系列函数 有关print read 的总结

总结一下 在学习arduino srial函数时 的几个知识点&#xff1a; /*** 汇总一下Serial.print输出的一些情况&#xff0c;后面部分要和Serial.read配合使用&#xff1b;* 1. print 输出字符 和int数的结果&#xff0c;* 2. print 输出字符串和一连串的数字* 3. read 读取一个字符…

C#经典名著:《C#入门经典》(第4版)

博客园专题&#xff1a;http://book.cnblogs.com/zt/begin_csharp/ 作  者&#xff1a; &#xff08;美&#xff09;沃森&#xff08;Watson&#xff0c;K.&#xff09;&#xff0c;&#xff08;美&#xff09;内格尔&#xff08;Nagel&#xff0c;C.&#xff09; 等著&#…

您必须学习Java 8的函数式编程吗?

我最近一直在研究Java 8&#xff0c;并掌握了Manning出版的“ Java 8 In Action” 。 让我印象深刻的第一件事是Java 8的独特销售主张是函数式编程。 函数现在是一流的变量&#xff0c;您可以像int或String一样在代码中传递它们。 这是一个很大的变化。 近年来&#xff0c;功能…

巨蟒django之权限6: 权限控制表设计登录权限

1.权限控制表设计 内容 1. 什么是权限&#xff1f; 2. 为什么要有权限&#xff1f;不同用户拥有不同的功能 3. 在web开发中&#xff0c;什么是权限&#xff1f;url 代表 权限4. 开发一个权限的组件&#xff0c;为什么要开发组件&#xff1f;5. 表结构的设计# 第一版权限表 pe…

CSS制作镂空字体

1.效果图 2.html内容&#xff1a; <!doctype html><html lang"en"><head> <meta charset"UTF-8"> <title>Document</title></head><style> body{background: rgb(248,248,248);} span{font-size: 240px;…

为什么要在Java的Serializable类中使用SerialVersionUID

序列化和SerialVersionUID始终是许多Java开发人员的难题。 我经常会看到类似此SerialVersionUID的问题&#xff0c;或者如果不在我的Serializable类中声明SerialVersionUID会发生什么情况&#xff1f; 除了涉及到的复杂性和罕见的使用之外&#xff0c;这些问题的另一个原因是Ec…

SQL2005-使用openrowset 里读取excel文件

很多时候我们都知道使用.net代码去读取word,excel文档&#xff0c;但是我们如何使用sql句语里读取excel文件呢&#xff1a;SQL2005为我们提供了OPENROWSET来访问各种数据源&#xff1a;,当然我还是建议使用.net代码来读取这些文件。这里就不多说了。 我们先看一下官方的解释&am…

Java中的SynchronousQueue示例–生产者使用者解决方案

SynchronousQueue是BlockingQueue的一种特殊类型&#xff0c;其中每个插入操作必须等待另一个线程进行相应的删除操作&#xff0c;反之亦然。 当您在SynchronousQueue上调用put&#xff08;&#xff09;方法时&#xff0c;它将阻塞&#xff0c;直到有另一个线程将该元素从Queue…

OnSen UI结合AngularJs打造”美团APP我的”页面 --Hybrid App

1、页面效果图&#xff1a; 演示地址&#xff1a;http://www.nxl123.cn/bokeyuan/meiTuanDemo_mine/ 2、核心代码 mine.html&#xff1a; <ons-page id"mine" ng-controller"MineController"> <!--toolbar开始--> <ons-toolbar>…

[MOSS开发]:通过简单BUG跟踪Demo阐述用户控件对列表的操作

下面的文章我想以一个具体的BUG跟踪Demo来说明MOSS的具体应用,这里面会应用到下面的知识点: 1:用户组,用户的创建,权限分配&#xff1b; 2:列表的概念以及创建&#xff1b; 3:利用用户控件来完成表单的增加加功能&#xff1b; 4:当前域用户查看自己BUG。 BUG跟踪软件在一些…

Maven的课堂笔记4

9.Maven与MyEclipse2014结合 MyEclipse10以上的版本,对Maven支持的就比较好 9.2 Myeclipse配置 本地文件夹的C盘的.m2文件夹下必须得有这个settings.xml文件 不配置这个settings.xml文件的话,myeclipse会从互联网上下载需要的jar包. 9.3 修改pom文件 添加jar包 <project xml…

vue动画

vue 提供了一些显示、隐藏一些不同的过渡&#xff0c;效果主要跟 v-if v-show 动态组件 1. vue 给动画分了 6 个过程&#xff0c;在 css 中扮演 6 个类 .v-enter  定义动画的开始状态 .v-enter-active  定义动画生效时的状态 .v-enter-to  定义动画结束是的状态 .v-leave…

图数据库的知识表示与推理

图形数据库及其技术生态系统可以为知识表示和推理问题提供优雅&#xff0c;有效的解决方案。 要了解这种说法&#xff0c;我们必须首先了解什么是图形。 图是一种数据结构。 图数据结构的类型很多&#xff0c;但出于本文的目的&#xff0c;我们将重点介绍一种已被称为属性图的类…

vegas 为盖斯

vegas 为盖斯 S键 分割素材U键 分开视频和音频I键渲染开始O渲染结束 默认布局 为盖斯新建项目的参数 剪好后渲染 插入字幕 转载于:https://www.cnblogs.com/GaoNa/p/10562504.html

COMET彗星(三)构建自己的COMET核心

主题列表&#xff1a; COMET彗星&#xff08;一&#xff09;SERVER PUSH介绍 COMET彗星&#xff08;二&#xff09;基于SERVER PUSH的消息传输 引言&#xff1a; 在上一篇随笔中&#xff0c;对COMET使用的类和作用进行了简短的介绍&#xff0c;从本篇随笔开始&#xff0c;将从实…