>> 扬声器1：让我们写一个程序， 从用户得到的字符串不
使用CS50图书馆 函数GetString的。
要做到这一点，我们将继续使用 scanf函数，该函数的GetString的
函数实际上使用 引擎盖下方。
但我要故意这样做 在越野车的方式。
我会做的方式，我认为 会是正确的，但事实证明，
我的假设是要 是相当，相当的缺陷。
而事实上，相当危险。
因为像我快要错误 使得可以通过对手所利用
这样，您的机器或程序 可以接管可能。
>> 让我们开始如下。
首先，让我们声明我们的字符串， 现在也被称为一个char星，
并调用它s。
让接下来的提示输入字符串的用户， 与“字符串，请。”和
现在让我们得到字符串从用户 使用scanf函数，报价引文结束，“％s的。”在
换句话说，让我们来告诉scanf函数，我们 确实是希望得到一个字符串
从用户。
>> 但现在我们需要告诉scanf函数 另一件事 -
放在哪里的字符串 用户所提供的。
嗯，我会很简单地启动 用逗号秒，指定我想
scanf函数把字符串那里。
我接下来将要打印出来的东西 如printf“感谢您的％s的
反斜杠Ñ逗号。“与往常一样，我 要通过在字符串，秒。
现在让我们保存，编译并运行此 程序，看看如果我们不能诱发
这个问题我预言。
>> 使scanf函数-1。
./scanf-1。
字符串请。
让我们提供的东西一样，“你好。” “谢谢你的空。”嗯，这不是
我所期待的。
那么，什么是怎么回事？
>> 嗯，原来是因为我们声明 S作为一个char明星，但我们没
实际上存储在s的地址 的实际内存块，scanf函数没有
必须随时随地把字符串 用户键入。
事实上，如果用户要键入现在在 一个更长的字符串不是“你好”，
比如几行文字或 文本的几个段落，这是相当
可能我们会诱发 所谓分段错误。
>> 因为scanf函数是不会知道 我还没有真正把一个地址
里面的秒。
相反，它会看到一些价值 s中，一些模式位可能
很好是一个垃圾值， 那里只是偶然。
和scanf还是要去尝试写 用户字符串到该地址，
即使它是一个垃圾值，这 确实可以导致系统崩溃。
>> 那么我们如何解决这一问题？