浅谈C的scanf
来源:互联网 发布:手机可以禁止安装软件 编辑:程序博客网 时间:2024/06/10 06:00
scanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息。
其调用格式为:
scanf("<格式化字符串>", <地址表>);
格式化字符串包括以下三类不同的字符;
1. 格式化说明符: 其中格式化字符串包括两部分内容:一部分是正常字符, 输入时这些字符将按原样的输入,另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,
用来确定输入内容格式。
2. 空白字符:空白字符会使scanf()函数在读操作中略去输入中的一个或多
个空白字符。
3. 非空白字符:一个非空白字符会使scanf()函数在读入时剔除掉与这个非
空白字符相同的字符。
注意:(1)地址表是需要读入的所有变量的地址,而不是变量本身:
----如果是一般的变量,通常要在变量名前加上"&";但输出时是用变量名
----如果是数组,用数组名就代表了该数组的首地址;输出时也是用数组名
----如果是指针,直接用指针名本身,不要加上“*”;输出时也用该指针即可。
这些都是一些基本的语法的规则,在正真用的时候输入单一的数据还好,一旦交叉输入,或者其他的情况就有各种问题,这主要的对于scanf的内部不怎么了解。
其实数据从缓冲区到输入列表的过程。
例子:
#include<stdio.h>
int main ()
{
Int num;
Int ch;
scanf( “%d”,&num);
Scanf(“%c”,&ch);
return 0;
}
在你输入一个整数以后,不再让你输入;这主要的原因是
因为在你按回车键之前 所输的数字都处于一个叫做缓冲区的位置里
回车键是特殊的 它先将字符'\n'添加到缓冲区 随后便清除缓冲区 将其中的所有字符发送到一个叫做输入列表的地方 ,scanf函数以及其他标准输入函数便会立刻从输入列表中获取内容,ch = ‘\n’;
格式说明符对于scanf是十分重要的 它便是“规则” 告诉scanf如何从输入列表中获取字符 并且如何做转换
时刻记住输入列表中的内容全是字符 规律就会十分容易
还有需要注意的是 尽管输入列表中的内容都是字符 但是字符还有分类 比如空白符 数字字符 字母字符等
例如
常见的%d 忽略前置空白符 获取连续数字字符 直到遇上非数字字符或者输入列表尾为止,但是如果忽略到空白符之后遇到的时非数字字符 那么就直接结束。
%c 直接获取一个字符到目标变量 “看见什么吃什么”。
又由于所有的变量都共享一个输入列表,所以很容易在上一个整数输完后列表里面由于有一个‘\n’所以下一个字符输入,直接的读取了。
为了防止这种情况的出现,所以在输入整型后加一段代码;
While(getchar()!=’\n’ )
{
continue;
}
- 浅谈C的scanf
- C的scanf()
- C语言scanf的学习
- C语言的scanf输入
- C语言Scanf的问题
- C语言的scanf函数
- C语言scanf的探索
- c中scanf的缺陷
- c语言的scanf函数
- C scanf()函数的妙用
- 【C/C++】scanf的用法 神器
- C/C++:scanf函数的黑科技
- 浅谈scanf()函数
- scanf("%c")
- 浅谈getch(),getche(),getchar(),gets(),scanf()的区别
- 浅谈scanf和printf两个函数的返回值问题
- 浅谈getch(),getche(),getchar(),gets(),scanf()的区别
- 浅谈getch(),getche(),getchar(),gets(),scanf()的区别
- 用GPG保卫你的重要文件-GnuPG/Gpg4win使用说明
- 项目小结
- Ubuntu root用户登录设置
- 高级数据管理
- 【poj3141】 Distant Galaxy
- 浅谈C的scanf
- Codeforces 23 E Tree 树形dp+高精
- HDU1937How many ways(记忆化搜索)入门
- csu 1110 RMQ with Shifts 线段树
- 关于 const,以下正确的是
- CentOS6.5的用户管理
- unity中的碰撞检测
- eetcode_c++:链表:Swap Nodes in Pairs(024)
- B. Remainders Game