黑马程序员——C语言中的scanf函数
2015-08-27 20:43
323 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、scanf函数介绍及使用
1、scanf函数介绍1)scanf函数的特点:
是阻塞式的函数,在函数执行后,会等待用户的输入,如果用户不输入任何内容,它会一直等待
2)scanf函数的作用:
从键盘接收用户输入的内容,保存到指定的变量中
3)scanf函数格式:
scanf函数中的格式控制符和输入项地址列表都不能省略
scanf("格式控制符",输入项的地址列表);
4)格式控制字符串:
规定数据输入的格式,由格式控制符合普通字符组成,格式控制符合百分号(%)一起使用,用来说明输入数据的数据类型(格式字符)。
5)输入项地址列表:
需要接收数据的变量地址,这些输入项与格式控制字符串在类型和数量上要对应,当有多个输入项时,各个地址名之间以逗号“,”分隔。输入格式和变量类型要保持一致。
6)其它:
在C语言中,一个变量的地址可以通过地址运算符&得到。
int a = 0, b = 0; //定义两个变量并初始化 printf("&p,%p", &a, &b); //输出a,b变量的内存地址
2、scanf函数中格式控制符介绍
1)常见的格式控制符
2)常见的使用方法
基本用法一:获取输入单个整型或者实型数据
当格式控制符要求输入整型数据时,如果输入的是小数,只能保存该小数的整数部分
#include <stdio.h> // 使用scanf函数,必须包含头文件stdio.h int main(int argc, const char * argv[]) { //从键盘上接收一个人得年龄,然后打印出来 //1、定义变量 int age=-1; //2、给一个提示,让用户输入一个年龄 printf("请输入年龄:\n"); //把用户输入的值,放到age变量中 scanf("%d",&age); //获取了age这个变量的地址 //3、打印用户输入的年龄 printf("您输入的年龄是:%d\n",age); return }
要求输入实数时,如果输入其它类型数据,则无法输出
在scanf函数中,可以控制域宽,但不能控制小数点后的位数
#include <stdio.h> int main(int argc, const char * argv[]) { //接收一个小数 float score = 0.0f; printf("请输入一个分数:\n"); //接收用户输入的值保存到score中 scanf("%3f",&score); //此处不允许写%m.nf ,但是%mf是可以的 //打印score的值 printf("%3.2f\n",score); return 0 }
二、scanf使用注意事项与原理
1、scanf使用注意事项1)如果在输入时,输入了多个空格、回车、Tab都会被系统忽略的
2)如果要获取的内容是多个整数,中间输入量多个空格、回车、Tab都会被系统忽略
#include <stdio.h> int main (int argc, const char * argv[]) { int a = 0; int b = 0; scanf("%d%d", &a, &b); printf("%d,%d\n",a, b); return 0; }
3)非法的格式输入,得不到想要的结果
4)当整型和字符型数据混合输入时,要避免“空格”添麻烦
为防止混合输入时空格造成的错误,可以通过添加普通的分隔符解决
5)scanf函数当遇到回车的时候,会结束执行
2、scanf中的修饰符
scanf函数的修饰符有:数据读入宽度(域宽、)*和长度
1)域宽:指定输入数据的宽度
int a; scanf(%5d,&a); printf(%d\n",a);
2)*:跳过相应数据不作处理——%*d忽略一个数字,%c忽略一个字符
int a,b; a = b = -1; //连续赋值 scanf("%d%*d%d",&a,&b); printf("%d,%d",a,b);
int a, b, c; scanf("%d%*c%d%*c%d", &a, &b, &c); printf("%d, %d,%d\n", a, b, c);
3)1或h:读入长整型、双精度或短整型数据
4)关于“\n”的使用问题:尽量不要使用,如果不小心使用,则可通过下面两种方法解决
a.输入值后,随便输入一个内容
b.\n要原样输入
3、scanf函数原理
如果输入缓冲区的内容不为空,scanf会一直从缓冲区中获取,而不要求再次输入
相关文章推荐
- C语言一个细节地方的说明【防止使用不当而出错】
- C语言之指针
- c/c++左值和右值
- C/C++编程题之大数相乘
- c++—————————const
- c++函数的返回值
- 传递实参时 丢弃了类型限定
- C语言基础知识之(九):函数
- 一些比较费脑子的C语言试题。
- C/C++, 字符库函数
- 乱侃C++
- C++面向对象之内核、实现、反思与救赎
- 密码验证合格程序
- C++ const的使用
- c/c++之调戏QQ,让QQ无法登陆
- C++ string 与其他类型的转换
- [leetcode]Majority Element C语言
- C语言易混淆关键词详解-const, static, extern, typedef, 声明
- C/C++中各种类型int、long、double、char表示范围(最大最小值)
- c++虚函数