首先,为了在VS中使用scanf,可以在程序开头加上

#pragma warning(disable:4996)

昨天在编写程序的时候,突然发现在循环中使用scanf("%c",&x);的时候,发现结果很奇怪,只能读入和输出我所输入的数据的一半。

后来又进行单步调试发现两轮循环才读入一个数据(在当时的我看来……)。

我的第一反应是:是不是VS编译器炸了?

然后我就又恢复又重新装了一遍,发现结果依旧。

然后我又想是不是scanf的问题,于是试了试scanf_s,发现依然存在问题。

最后经过查阅网上的资料和自己的尝试,发现这样写:

scanf(" %c",&x);                //在%c前加一个空格

就可以正常读取数据了。

以下内容来源网络(https://blog..net/i1178632444/article/details/50281987):

因为scanf只是读入一个字符,而你在输入时实际上输入的是:字符+回车(Enter),Enter产生的"\n"也在输入缓冲区中,下次调用 scanf时就会直接读到 它而不是等待你再次输入!所以我们不提倡使用 scanf("%c", ...),特别是不提倡把它用在循环中。这也是微软改写该类函数的原因,那么如何解决呢?

一把来说,主要方法有四种:

方法一:只要再加一句scanf就行了。

方法二:使用函数fflush,清除流,就是在每个接收字符的scanf语句前面,加上fflush(stdin);

方法三:将 scanf("%c", &ch); 修改为:     scanf(" %c", &ch);    /*在%前加上一个空格*/

方法四:将 scanf("%c", &ch); 修改为:     scanf("%c%*c", &ch);   %*c是跳过一个输入字符的意思.这个是scanf的一个语法.就是在%和格式字符之间加一个*号就可以跳过这个输入数字.比如当执行语句:scanf("%c,%*c,%c",&a,&b);时,我输入m,n,p三个字母后,a的值为m,b值为p,n被跳过了。

vs写c语言能用scanf,【PAT编写代码时遇到的问题】vs中使用scanf(%c,x);相关推荐

  1. C语言scanf函数的返回值、scanf函数的安全版、在while条件中使用scanf函数

    scanf函数的返回值,是正确读取的项数:读入一个数,返回1,读入2个数,则返回2,如此: VC2012,先做一个测试程序: 提示出错: error C4996: 'scanf': This func ...

  2. java编写代码时易出错_写Java程序最容易犯的错误有哪些呢?

    1.Duplicated Code 代码重复几乎是最常见的异味了.他也是Refactoring的主要目标之一.代码重复往往来自于copy-and-paste的编程风格.与他相对应OAOO是一个好系统的 ...

  3. vc 写c语言程序步骤,VC++ 6.0编写程序的详细步骤

    想知道VC++ 6.0工具如何编写程序吗,可能有些朋友还不熟悉,我们一起去了解一下VC++ 6.0编写程序的详细步骤吧. VC++ 6.0编写程序的详细步骤 vc++6.0的菜单简洁,工具明了,这里以 ...

  4. 我认真写下9段如翔一般的代码,只为等你来品鉴

    溪源 | 长沙.NET技术社区 开篇 我们总是很容易就能写出满足某个特定功能的代码,却很难写出优雅代码.又最欣赏那些优雅的代码,因为优雅代码更能体现一个开发者的积累. 就像写一篇散文,有的就像初学者不 ...

  5. php中显示li,请C语言大侠们帮忙看看,为什么总显示 array subsc... html中的ul li 用php怎么做?php在html中写 代码如......

    导航:网站首页 > 请C语言大侠们帮忙看看,为什么总显示 array subsc... html中的ul li 用php怎么做?php在html中写 代码如... 请C语言大侠们帮忙看看,为什么 ...

  6. 【使用VS2022写c语言】第一次使用VS2022写c语言代码可能会遇到的问题及解决方法。

    在看了不少b站上的VS2022安装教程之后,最终也是成功安装好了VS2022,但是在后续的使用过程中又遇到了不少的问题. 1.作为大一新生,平时最多的就是写一些c语言的题目,然后VS2022上面写c语 ...

  7. 如何用VS2022写C语言(新手入门)

    如何用VS2022写C语言 为什么使用VS2022写C语言 vs2022的下载 如何使用VS2022创建C语言程序 检查环境是否完备 创建.C源文件 测试程序 注意事项: 1.scanf函数的使用 2 ...

  8. VS2019中C语言中使用scanf 报错_CRT_SECURE_NO_WARNINGS,简单解决,一劳永逸

    前言 在vs2019中,写C语言时(在.c文件中)使用scanf 会报错_CRT_SECURE_NO_WARNINGS 其实只要添加 一行代码 就好啦 #define _CRT_SECURE_NO_W ...

  9. C语言中使用‘scanf’输入与‘printf’输出的几个例子

    C语言中使用'scanf'输入与'printf'输出格式及几个程序举例 初学者最常使用的就是键盘输入(scanf)和输出(printf) scanf的调用格式为: #include<stdio. ...

最新文章

  1. Nature:根系菌群参与磷胁迫和免疫的平衡
  2. 人工智能实践:TensorFlow笔记学习(六)—— 全连接网络实践
  3. JavaScript 学习(2) - JS的内建对象
  4. Distcp 分布式拷贝
  5. log4net(c#) 配置及使用
  6. JQuery 文本框高亮显示插件
  7. PerlRegex堆栈溢出的问题
  8. 使用虚拟时间测试基于时间的反应堆堆芯流
  9. python中if语句求最大值_python 判断三个数字中的最大值实例代码
  10. 中医科学院院士团队解析丹参纯合基因组和新基因簇在丹参酮合成中的作用
  11. 什么是deployment 声明式升级应用
  12. Unity3D脚本访问与参数传递
  13. 双稳态电路的两个稳定状态是什么_555定时器原理知多少?四种应用电路分享
  14. 3. pandas基础
  15. VC使用: vs2003的工程升级到vs2010的问题汇总
  16. Oracle 中递归查询
  17. 互联网日报 | 6月24日 星期四 | 快手全球月活已达10亿;HarmonyOS 2首批正式版升级;微软市值突破2万亿美元...
  18. Mixly 触摸开关的使用
  19. Centos7.6挂载IPSAN【iscsi存储】并应用为LVM分区
  20. php 生成excel透视表,是否可以使用PhpExcel库生成或克隆数据透视表?

热门文章

  1. GitHub博客开发上线实战
  2. 把16进制转换为ascii字符c语言,ASCII转16进制C语言
  3. 求一个数的阶乘值c语言代码,求10000的阶乘(c语言代码实现)
  4. java线程条件变量_使用条件变量(多线程笔记)
  5. python合并多个excel的某些字段_python合并多个excel文件的示例
  6. 数组的合并和升序排列_区间调度问题之区间合并
  7. c语言点按钮弹窗口,【iOS】按钮点击弹窗
  8. linux+守护进程+php,【转载】Linux 守护进程的编程方法
  9. html自动图片尺寸,关于html:CSS背景图像适合宽度,高度应按比例自动缩放
  10. java多线程的优点_【java多线程的优点】