函数原型:int scanf(const char * restrict format,…);
函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应.
返回值:int型,返回正确读入的数据项。如果遇到错误或文件结尾返回EOF,end of file为Ctrl+z 或者Ctrl+d。
格式指令说明:
1.表示读入的数据被舍弃,带有的格式指令不对应可变参数列表中的任何数据,读入但不保存。
2.域宽:以一个非零的十进制整数形式出现,表示该格式指令最多读入的字符数。
3.格式说明符:c表示读入指定宽度的字符(%2c更高的宽度测试不成功) s(字符串) d(可带正负号的10进制整数) i(可选符号的整数) o(可选符号的8进制整数) x X(可选符号的16进制整数) p(指针) n(不读入任何字符)
注意点:
1.控制串中的空白字符(空格,制表符,table键)可以使scanf在输入流中跳过一个或者多个空白行,知道发现非空白字符为止,这些空白字符读入但不保存。
如:scanf("%3d\n\n%5d",&a,&b)在输入中可以换行两行再输入第二个数字。
2.非空白符使 sca流中读一个匹配的字符并忽略。例如,"%d,%d" 使 scanf 先读入一个整数,读入中放弃逗号,然后读另一个整数。可以直接在终端输入如:12,34.
3.在输入流中,数据项必须由空格、制表符和新行符分割。逗号和分号等不是分隔符:
如:scanf("%d%d",&a,&b) 输入为:12 34 而不是12,34或者是12;34
但是对scanf("%c%c%c",&a,&b,&c)d单个字符输入时它们(空格、制表符和新行符分割)作为普通字符,会被读入进去的。
如:输入:xyz 正确 输入x y z 则a=x;b= (空格);c=y;
4.控制串中的其它字符,包括空格、制表符和新行符,都用于从输入流中匹配并放弃字符,被匹配的字符都放弃。
如:scanf("%dt%d",&x,&y);输入:12t34 ,则x=12;y=34;t被丢弃。
5.设置给定域宽,如果输入大于设定,则只读取设定长度,下次scanf接着读取。
6.scanf特性:扫描集。读入允许的字符并赋给相应的字符数组,前边加%。%[A-Z]区分大小写,^表示补集,可匹配其它所有字符。
如:scanf("%[ABC]",str) 你输入ABCabc 只会打印出来ABC而不是ABCabc.它是连续扫描匹配字符,知道发现不在集合内的字符为止,如果你输入AaBbCc,只会打印A!
对于输入含有空格的字符串处理可以这样:scanf("%[^\n]",str),否则只会显示第一个空格前的字符,想要看到其它信息需要接着打印。其它的缓冲在标准输入流中,而不是键盘缓冲区内。
7. %d格式控制输入时,可以使用回车,TAB,空格作为分隔符。分隔符可以同时使用,不限个数,最后一个enter\n会被读入。
%s %c格式输入的时候,空格 table 转义字符会被读入。
如:scanf("%10s",ss);scanf("%c%c",&m,&n);
输入123456789012 ss=1234567890 m=1 n=2.
输入1234567890 按回车键 \n被读入 再输入12(两个字符)此时ss=1234567890 m=\n n=1.最后一个字符被忽略。
可以scanf("%10s\n",ss);或者getchar()匹配\n字符解决这个问题或者就是连着输入。
8.scanf()每次回车之后从缓冲区读取数据,当缓冲区为非空时才结束输入。
如:scanf(“%c\n”,&c);输入一个字符按回车键后数据被读入\n也被读入,缓冲区为0所以还要再输入一下才可以结束。
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |