• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 详解C语言中scanf函数使用的一些注意点

详解C语言中scanf函数使用的一些注意点

作者:cqnuztq 字体:[增加 减小] 来源:互联网 时间:2017-05-28

cqnuztq 通过本文主要向大家介绍了c语言scanf函数,c语言中scanf函数,c语言scanf,c语言scanf用法,c语言中scanf的用法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

 (一)基本介绍

Scanf是系统自带的函数,声明包含在stdio.h文件中,因此要是有该函数,必须加载#include<stdio.h>头文件。当执行到scanf函数时,程序就暂停等待用户输入,该函数只接受变量的地址,格式为&变量名。是一个阻塞式的函数,2用户输入完毕后,则将值赋值给变量,至此函数调用完毕。敲回车键告知计算机键入完毕。

(二)使用注意

①. 使用scanf函数输入一个字符变量。Char a; scanf(“%c”,&a);

②. 同时输入多个值。Scanf(“%d,%d”,&num1,num2);

③. Scanf(“%d\n”,&a);//在内部不能使用\n转义字符,否则没完没了。

 

注意:在这里两个占位符之间是,隔开,则要求在输入时也使用逗号隔开如输入1,2。此时为num1=1,num2=2。若内部为“%d#%d”则输入1#2。若内部为“%dy%d”,则输入1y2。如果中间的字符是空格,则在输入时可以用空格隔开,也可以敲tab键或者是回车键作为分隔符隔开,后两者可以看做是由空格组成的。

(三)一次踩坑的碎碎念...

#include<stdio.h>

int main()
{
 char ch;
 printf("选择A或者B(按回车键确认):");
 scanf("%c",&ch);
 while(1)
 {
 if(ch == 'B' || ch == 'b')
 {
  printf("对不起,您输入的答案错误,请重新输入!\n选择A或者B(按回车键确认):");
  //getchar();
  scanf("%c",&ch);
  printf("ch=%c",ch);
 }
 else
 {
  printf("\n正确\n");
  break;
 }
 }
 return 0;
}

</div>

上面代码的得到的结果是:

201649162808089.jpg (363×121)

貌似跟我预想的不一样,我本想如果输入的是'B'或者'b'就继续循环输入,但是结果确实直接做了一次循环就停止了。为什么呢?

原来在循环外的那个scanf做完后按下的回车键进入了缓存,而进入循环执行scanf后(这次输入的也是'b'),缓存的内容应该是buffer[] ={'b','\n'};而执行printf("ch=%c",ch);时取的值就是'\n',所以看上去好像没有执行scanf语句,其他执行了,只是这次打印的字符不是刚刚输入的'b',而是它前一个字符'\n',所以要达到我本来的效果,则需要先将'\n'从缓存中清除掉,调用一次getchar();即可,如上代码也只需将注释的那一句代码解注释即可。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解C语言中scanf函数使用的一些注意点

相关文章

  • 2017-05-28Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验
  • 2017-05-28C语言实现字符串匹配KMP算法
  • 2017-05-28C++中this指针的用法及介绍
  • 2017-05-28基于c++中的默认拷贝函数的使用详解
  • 2017-05-28算法之排列算法与组合算法详解
  • 2017-05-28纯C语言:贪心Prim算法生成树问题源码分享
  • 2017-05-28C++ sizeof 实例解析
  • 2017-05-28深入分析C语言分解质因数的实现方法
  • 2017-05-28理解数据结构
  • 2017-05-28使用C语言编写圣诞表白程序

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言指针数组(数组每个元素都是指针)详解
    • C语言 指针与数组的详解及区别
    • 详谈C++的内存泄漏问题
    • POJ2151 Check the difficulty of problems 概率DP
    • C++用Dijkstra(迪杰斯特拉)算法求最短路径
    • C语言 经典题目螺旋矩阵 实例详解
    • Cocos2d-x中CCEditBox文本输入框的使用实例
    • 关于C++中构造函数初始化成员列表的总结
    • 如何求连续几个数之和的最大值
    • C++、C语言和JAVA开发的区别

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有