你好, 欢迎｡
在这堂课中, 我想谈谈 从键盘阅读输入｡
这是我的一个基本概念
我希望你们早点学习因为这很有价值 很多程序都需要输入｡
所以我很早就提供了这个｡
有些概念并不 会变得非常清楚｡
但我们一定会学到这些 概念,
但重要的是 我很早就知道了, 它和printf函数非常相似.
我们已经讨论了输出｡
我们知道如何格式化 使用printf输出｡
我们现在要学一点 关于输入的一点, 从用户那里获取输入｡
询问用户 把数据输入程序｡
我们讨论了命令行 通过这种方式输入数据, 这是一种方法｡
另一种方法是询问用户 这样他们就可以在键盘上输入东西了｡
所以你可以从 键盘, 但它会显示您输入的输入
通过终端控制台｡
这就是输入的方式｡
c语言库包含 多个输入功能｡
我们将使用scanf｡
这是最通用的函数｡
这很有用｡
它提供了不同的 格式｡
您可以输入文本, 然后它会 转换成不同的格式｡
因此scanf从 标准输入流, 即stdin｡
Scanf实际上可以用于 如果输入流是一个文件, 也可以从文件中阅读｡
但我们不会担心
我们现在要用它来 从键盘读取输入｡
好的, 那么等一下 默认为键盘｡
Stdin是一个流｡
溪流和c, 三个 不同的流｡
错误流, 标准 输入和标准输出｡
默认情况下为标准 是键盘｡
所以我们要保持这种状态｡
使用scanf它将 从中的标准读取, 然后根据您输入的内容或方式
你想存储数据,
我应该说, 它会转换 因为你输入的是文本｡
它会将文本转换为 您提供的格式｡
它将使用格式说明符 就像printf函数一样｡
因此, 格式可以是 字符, 称为字符串｡
我们还没研究过 还没有很多细节｡
但是, 我们还是要当 我们讨论数据类型｡
然后您还可以指定 我们将要讨论的其他数据类型, 例如
基本上是整数和数字｡
所以你可以读数字｡
你可以读字符串｡
您可以读取包含 小数, 单个字符,
所有这些好东西｡
如果标准输入是从 键盘是默认的, 当你输入文本时
通过键盘,
它会把文本输入到c程序中 它会转换这些文本｡
文本是这样的 字母､ 数字和标点符号｡
所以即使你在输入 一个数字, 它仍然是文本,
因为它来自键盘｡
所以如果你输入整数2014 这是一个数字, 实际上就是你在输入
字符201和4｡
发生了什么事 它将把输入添加到c程序中｡
如果你想储存这些数据 转换成数字, 然后你就必须转换这些数据｡
所以你必须指定格式 指定如何转换它, 就像在printf上所做的一样｡
请记住, 就像使用printf一样 % d打印整数｡
您可以将文本转换为 如果您想使用scanf, 也可以使用percent
d 将字符串转换为数字｡
这就是我们要做的 做的基础工作｡
我们只需要用数字
因为我们目前知道的数字, 我还没学过弦｡
所以我们将主要 输入时使用数字｡
所以扫描｡
它与printf非常相似｡
但事实上, 它有点不同 它所需要的某些参数｡
它仍然使用控制字符串 后跟一个参数列表｡
所以肯定会有 在双引号里｡
双引号通常 只包含一个内容, 它将是格式说明符｡
如何转换数据｡
所以控制字符串表示 返回输入字符流的目标数据类型｡
它是格式说明符, 流量的百分比d､ 百分比c､ 百分比s､
百分比f等等｡
printf函数使用变量 变量中的名称､ 常量和表达式,
因为我们了解这些｡
你有双引号里的东西｡
然后在双 引号, 则使用格式说明符｡
在逗号后面 可以打印变量, 甚至可以打印表达式｡
表情, 我们会谈到 更详细地说,
它本质上返回一个值｡
最常见的表达式类型 是算术运算式｡
scanf函数不同
因为它不是显示变量 使用指向的变量｡
但幸运的是 是C语言中的一个大概念｡
你什么都不用知道 以了解和使用scanf函数｡
所以不用担心这个｡
好吧, 你只要 为了使用scanf函数,
我必须记住三条规则｡
它将返回 成功读取的项目｡
如果它读取一个变量, 两个变量, 三个变量, 它将返回｡
如果使用scanf读取值
我们将要讨论的一个基本变量类型, 例如 int型浮点型双精度型那么你要做的就是
变量名, 参数前面必须有一个“与”符号｡
你甚至不需要知道为什么 这是正确的, 但只要做它,
任何基本的数据类型｡
“与”号是地址｡
因为scanf使用指针 你必须取消引用, 你必须传入地址
第三件事, 你 必须记住scanf｡
如果使用scanf读取 字符串, 它是一个字符序列转换成一个字符,
您 不一定要用&符号｡
基本上scanf需要两个 我会给你们看一个例子｡
第一个论点是 以转换您输入的数据｡
如果你把这些数据 在int中, 您使用格式说明符percent
d来使用percent｡
如果要在字符串中存储 我们还没学过, 你用的是百分比｡
第二个论点是 它可以是许多参数,
这取决于您使用的格式说明符的数量 因为就像printf一样, 它是实际的变量,
即变量名｡
如果变量是除了 一个字符串, 你只需要使用&符号｡
否则, 你不 请使用&符号｡
Scanf函数也使用空格 以确定如何将输入划分为单独的字段｡
空白包括 新行､ 制表符和空格｡
我再举一个例子
来告诉你这意味着什么因为就像printf可以显示很多, 变量的数量取决于
单引号, scanf也是一样｡
如果scanf有多个内容 在双引号内,
它将读取多个输入｡
而输入信号 以新行分隔｡
所以如果你想尝试 要理解scanf是什么,
它是printf的对立面｡
Printf将转换整数, 浮点数字符串所有这些不同的数据
类型, 并将其转换为文本, 这样您就可以看到它输出
这将是 显示在屏幕上｡
Scanf正好相反｡
它将把 文本并将其转换为任何不同的数据类型 比如整型､
浮点型和双精度型｡
让我们看一个例子｡
这是 我们有一个简单程序｡
我们知道主程序是什么｡
我们知道include指令是什么｡
我们还没有了解到 字符和整数｡
但基本上在最顶端
我们创建了两个变量, 因为我们需要存储 我们会更详细地讨论变量｡
但就像printf函数一样, 你又一次做了相反的事｡
在这里, 我们将输出显示到 屏幕提示输入一个值｡
双内扫描 quotes具有要在输入中读取的格式说明符｡
因此, 您必须指定 要读入的数据, 这里是%
s, % d｡
这意味着我们在一个 字符串, 然后我们阅读一个int.
你会注意到 在第一个逗号后没有&符号和scanf｡
在第二个逗号之后, 我们有一个 因为它是整数｡
我们正在阅读一个数字｡
然后是printf 正在显示输出｡
所以说你参加了 字符串, 就像我们知道printf的作用一样,
然后 main函数返回零｡
好吧, 我们来回顾一下 示例在第二代码块中｡
但我们还是重申一下 几个概念｡
当程序使用scanf 从键盘收集输入时, 它会等待您输入一些文本｡
所以这个程序实际上 暂停, 直到您输入数据｡
然后一旦你输入了一些文字｡
如果你输入一些空格,
如果你输入了多个内容, 程序就会继续 并在您实际按下Enter按钮后读取输入｡
你得按回车键｡
同样, scanf需要 与您提供的格式完全相同｡
所以如果你说百分之s和百分之 e,
这意味着您必须提供一个后跟空格的字符串, 任意数量的空格, 后跟一个整数､
一个数字和一个字｡
字符串是一个字整数是一个数字｡
让我们来看看这个例子 在代码块中逐行执行｡
好的, 我们有 我们的主要功能｡
同样, 重要的是 能够将数据输入程序｡
所以就像printf一样 非常相似, 我们不需要理解所有这些代码｡
我们甚至还摆脱了 传递参数,
简单主函数
我们不需要 理解所有这些代码｡
我们甚至不需要了解 在这一点上有什么变数｡
但变量会存储数据｡
在本例中, 我们创建了 一个100的字符串数组, 并带有一个分号, 然后
也会创建一个整数, 就像printf一样｡
我们有一个整数, 但是 我们使用的是字符串｡
我只是想证明 不同的输入｡
然后通常每当你 调用scanf函数以从键盘获取输入, 则您总是
告诉用户一些事情｡
你要告诉他们要输入什么｡
所以printf, 记住, 在屏幕上显示数据｡
我们只需要输入一个值｡
而且他们会 输入一对, 然后以分号结束｡
我们必须告诉 用户输入内容｡
现在, 我们 请使用scanf函数｡
我们说scanf, 然后在 括号双引号内的第一个参数
是我们要读取数据
在这个例子中, 我们 假设我们只读取一个输入percent,
d, 它是一个整型数｡
然后我们将 将数据存储在一个变量中,
因为我们要查看它｡
而我就是｡
现在, 我们必须指定&符号 因为, 记住,
这个指针的小把戏｡
你不需要知道 只是地址而已｡
所以第17行的scanf 实际上从键盘读取数据直到用户点击回车按钮｡
然后这些数据会 存储在名为I的变量中｡
所以现在我们只想 打印我们输入的内容｡
所以在这里我们要说, 我们将添加一个换行符, 以便它可读, 因此我们将
用我们的转义序列, 反斜杠n,
我们会说你｡
您输入了% d, 我们将 以显示变数的值｡
我们还将 在后面放一个换行符｡
所以变量的值 我们想要显示的是i｡
我们将结束 它与分号｡
这就是我们的计划｡
因此再次打印输出, 要求 一个值, 阅读输入行17, 指定要
阅读的是一个整数, 将其存储在, i中, 使用&符号,
然后 打印出我们刚输入的内容｡
让我们构建并运行它｡
你会看到程序开始 然后它会暂停, 因为它希望您输入一个值｡
它说输入一个值｡
所以在这一点上, 我必须输入 我可以把它转换成一个字符串, 因为这就是发生的事情｡
所以这里我只说56｡
然后, 我将按回车键｡
因为我的病毒扫描程序它运行了两次｡
所以我会说56然后输入｡
然后打印出来, 我输入了56｡
所以我可以输入信息, 并将其存储在变量中｡
现在就像printf一样, 您可以让他们输入多个内容
存储在多个变量中｡
所以在这里结束后 整数,
我会说另一个百分比, 格式说明符percent s, 这意味着我想让他们输入一个字符串, 这只是一个搜索单词｡
所以记住如果是一个词我 不必提供&符号｡
所以我要说 Stirling,
我想把数据存储在变量存储中｡
同样, 我们将学习变量｡
然后我会 打印出来｡
我又加了一个变量
你知道printf我会在前面加上冒号 来指定打印的格式, 所以它们是百分比｡
所以希望这是清楚的｡
我现在要用两段来朗读 用空格分隔的输入, 将它们存储在两个变量中,
I 搅拌后展示｡
所以现在如果我们建造并运行｡
在这里, 我将输入我的 22号, 我将按空格键, 然后输入我的名字 然后按回车键｡
当我这么做的时候 它会显示数字I
然后输入字符串｡
所以它显示22和Jason｡
这就是你如何 从用户输入, 简单的四或五行代码｡
还有一件事我想简单介绍一下 你是如何在一个双重阅读｡
所以在后面的课程中, 你 如何读入浮点数这通常是用
返回指定百分比f格式
但如果你跑去读两遍, 实际上,
如果你使用百分lf, 会有一点不同 把这件事记在心里｡
如果我创建一个名为double x的变量 然后我用scanf读入它, 我需要用percent,
LF读入它｡
这就是格式 要使用说明符
然后又像 其他的, 你可以用&来表示地址,
然后说x｡
这就是你如何 特别是双精度读取｡
这是一个不同的 比阅读更容易｡
所以把这件事记在心里｡
当你运行这个程序时, 你会发现 它的工作原理非常简单｡
您可以读取输入 阅读为双精度｡
所以你就去查吧｡
所以它会要求 双倍, 我没做什么
这个双打就像77个｡ 8和 然后读入并存储它, 这非常简单
所以scanf非常 正如我提到的那样｡
扫描的其他内容
你会发现在学习过程中 有时候效果并不好｡
你可以用f get s做其他事情｡
scanf的主要问题是： 当你读的时候, 你只是在阅读,
直到你看到一个空格｡
所以如果你试着用 scanf,
您尝试在函数中多次调用它｡
对于其它组合,
它可以 效果不太好, 因为当你点击
键盘上的回车键, 它会不会 读回车键, 因为它只读一个单词｡
所以它不会 以取得换行｡
所以下次使用scanf时, 它会立即跳过这一行
以读入换行字符｡
这是一个你会看到的问题 如果您在单个程序中一个接一个地写入多个scanfs, 您会注意到其他scanfs没有执行,
因为 他们在阅读换行｡
一个非常简单的方法来绕过它 就是在你做了一个scanf之后调用git
char然后调用 另一台扫描仪, 但这只是一个概念, 稍后再谈｡
这只是为了让你知道 使用scanf读入double时, 请确保使用了percent
LF｡
同样, 这很有用, 因为
我们的一些挑战将使您能够从用户那里获得输入
为了做有用的事情和学习不同的概念, 我们被 能够从用户获得输入｡
所以我希望这对你有帮助｡
再说一次,
不要担心 你还没有完全理解这些概念 比如变量和字符串,
我们将讨论所有这些 非常详细的谢谢｡