转:scanf的用法
https://blog.csdn.net/u012421456/article/details/18501309
scanf()【通过键盘将数据输入到变量中】
它有两种用法:
用法一: scanf(“输入控制符”,输入参数);
功能: 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入已输入参数的值为地址的变量中。
例如:
- # include <stdio.h>
- int main(void)
- {
- int i;
- scanf("%d",&i);//如果输入123
- printf("i=%d\n",i);//输出结果为i=123
- return 0;
- }
用法二: scanf(“非输入控制符 输入控制符”,输入参数);
功能: 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入已输入参数的值为地址的变量中(非输入控制符必须原样输入)。
例如:
- # include <stdio.h>
- int main(void)
- {
- int i;
- scanf("m%d",&i);//输入m123正确,输入123错误
- printf("i=%d\n",i);//输入m123,输出结果为i=123
- return 0;
- }
另外,需要注意的是,在使用scanf之前最好再使用printf进行操作说明(即提示用户以什么样的方式进行输入)
例如:
- # include <stdio.h>
- int main(void)
- {
- int i,j;
- printf("请输入两个数,中间用空格或回车隔开:");
- scanf("%d %d",&i,&j);//输入的两个数之间是空格或回车
- //scanf("%d,%d",&i,&j);//输入的两个数之间是逗号(逗号是一个非输入控制符,非输入控制符必须原样输出)
- printf("i=%d j=%d\n", i, j);
- return 0;
- }
还有,scanf中尽量不要使用非输入控制符,尤其不要使用 \n
例如:
- # include <stdio.h>
- int main(void)
- {
- int i,j;
- //使用scanf之前最好先使用printf进行一个操作说明,另外scanf中尽量不要使用非输入控制符,尤其不要用\n
- printf("请输入两个值,中间用空格或回车隔开:");
- //scanf("%d %d\n",&i,&j);//在scanf中不要使用\n,这样不好
- scanf("%d %d",&i,&j);//输入的两个数之间是空格或回车
- //scanf("%d,%d",&i,&j);//输入的两个数之间是逗号 逗号是一个非输入控制符,非输入控制符必须原样输出
- printf("i=%d j=%d\n", i, j);
- return 0;
- }
最后,为了防止当程序中有多个输入时,用户在前边的输入有误导致影响到下面的输入,我们可以在输入的后边添加一个
while ( (ch=getchar()) != '\n')
continue;
例如:
- # include <stdio.h>
- int main(void)
- {
- int i;
- char ch;//添加字符数据
- scanf("%d",&i);
- printf("i = %d\n",i);
- while ( (ch=getchar()) != '\n')//把用户前边的非法输入消除!!!
- continue; //重点!
- int j;
- scanf("%d",&j);
- printf("j=%d",j);
- return 0;
- }
好了, 以上就是scanf的基本用法 ,第一次写博客, 感觉有些吃力,相信以后会好一些.
【所有代码均在window系统下VC6.0下运行通过】
转:scanf的用法的更多相关文章
- C的printf与scanf的用法
之前没学过C语言,只学过C++,所以就来自学下C语言了,其实个人认为C与C++的区别很小,基本上就是printf与scanf这点输出和输入的区别了,如果还有什么区别的话那就是要包含的头文件是不同的.比 ...
- C++中printf和scanf的用法
(一)printf的用法 printf:按格式打印,向控制台输出.print:打印 ,f:formate,格式化. 在使用printf向控制台输出时,不建议使用中文字符串,中文字符串的问题比较复杂,有 ...
- scanf *的用法
scanf *的用法 char a[LEN]="12:13:14"; char i,j,k,h,l,m; sscanf(a,"%*c%*c:% ...
- scanf()函数用法小结
scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息. 其调用格式为: scanf("<格式化字符串>",<地址表>); ...
- C语言: 运算符,printf,scanf的用法
运算符/的运算结果和运算对象的数据类型有关,两个数都是in,则商就是int,取整数部分:被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不去掉小数部分如:16/5 == 3:16/5.0 ...
- C语言中scanf()的用法!
好文章转自:http://blog.tianya.cn/blogger/post_show.asp?BlogID=287129&PostID=3668453 scanf详解 scanf 原型: ...
- scanf函数用法小记
By francis_hao Aug 26,2017 scanf – 输入格式转换 概述 #include <stdio.h>int scanf(const char *fo ...
- getchar() getch() getche() gets() puts() scanf()的用法及区别
getchar() putchar(ch) scanf() 头文件stdio.h getch() getche() 头文件conio.h gets() puts() 头文件stdio.h ...
- return 的用法 初探
#include<stdio.h> int imin(int ,int ); int main() { int evil1,evil2; ) //注意 第二个%d后面不能有空格,大概这就是 ...
随机推荐
- Jeddict:怎样在window系统下,成功打包Angular
在Jeddict的应用过程中,发现了一个问题.如果前端视图选择Angular(具体版本,需要根据插件版本确定.此处理解为非Angular JS),那么在自动构建的过程中,会发现,每当在安装NodeJS ...
- hibernate框架的搭建与简单实现增删改
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自 ...
- HDU-2853 Assignment
求二分最大匹配,但还要尽量接近原匹配... 解决方法:对于N个顶点的二分图,每条边同时乘上一个比N稍微大的数N',然后对于在原匹配的边就都+1. 经过这样处理,求得的答案Ans乘除N'即是原图的最大匹 ...
- APIO2018 题解
坑了好久,补一补. 话说我当时去参加 $APIO2018$ 了,不过纯粹打铁…… 我的程序交道人家毛子的网站上, $c++14$ 编译器不停地给我编 $RE$,只记得好像是结构体排序的问题(删掉那个排 ...
- 在vue单页面应用当中使用sass
之前在项目当中有使用过sass,但是使用的方式有点Low,是在vue文件当中的style下面通过@import的方式引入的. 其实在webpack当中也可以通过在main.js当中import &qu ...
- STL学习笔记(七) 程序中使用STL
条款43:算法调用优先于手写循环 class Widget { public: bool test(); }; vector<Widget> vec; 算法调用: for_each(vec ...
- spring和resteasy 的集成方式
spring和resteasy集成,三种主要的方式, 对于和jboss as7的集成不需要做任何工作,jboss默认集成了resteasy,只需要对业务pojo做一些jax-rs的注解标注即可.这里讲 ...
- mybatis传入map参数,map中包含list(输入参数)
1.xml中配置: <!-- 根据条件查询满足条件的ID集合开始 --> <select id="getQuestionsIdsForExamPaper" res ...
- JVM指令详解(下)
九.自增减指令 该指令用于对本地(局部)变量进行自增减操作.该指令第一参数为本地变量的编号,第二个参数为自增减的数量. 比如对于代码: int d=10; d++; d ...
- luogu 1327 数列排序 & 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J题 循环节
luogu 1327 数列排序 题意 给定一个数列\(\{an\}\),这个数列满足\(ai≠aj(i≠j)\),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? ...