>> 扬声器1：让我们一起来看看 在CS50库，
特别是其调用getInt功能。
在这里，我们有实际的源 对于调用getInt代码。
并请注意，这不是时间太长， 其中大部分是构成一个while循环 -
无限循环在那 - 只有 返回一个值，一旦我们实际上已经
得到我们所期待的。
让我们通过它。
>> 请注意，在这里第一， while循环开始。
注意接下来我们有一个行代码 这实际上是调用GetString的，
和存储在返回值 变量，叫做string类型的线，。
然后，我们做的有点完整性检查。
如果行== null，那么我们好奇地 返回INT_MAX。
>> 现在，事实证明，INT_MAX是一个 特殊常量声明别处
指定的最大可能 INT，你可以在一个代表
程序是这样的。
现在我们已经擅自决定返回 INT_MAX作为一个哨兵值
各种各样的，一个我们已经保留作为 这意味着一个错误已经发生。
因此，我们付出的代价，当然是 该调用getInt显然可以不
实际上返回一个数字一样大 INT_MAX，因为即使它想，
该返回值应该真的 由调用者解释 -
谁是使用调用getInt -
作为某种错误。
>> 接下来，请注意，我已经声明 一个int n和一个char角
在这个代码下一行，我所说的 函数调用sscanf的，在传递
四个参数。
线，这是字符串的用户的 类型中，“％I％c”的，这是一个格式
字符串，我期待的用户可能 类型，随后的地址
n和C的地址。
在现在的生活的sscanf的目的确实是 扫描一个串寻找的
特定的格式，程序员 已指定为第二个参数。
在这种情况下，％i是 还有，因为是％C。
所以，如果遇到的sscanf在一个int 用户的输入，该整数将被存储
称为n变量，里面因为 我们已提供作为第三
参数的sscanf n的地址。
这意味着sscanf的，的确可以去 在那里，并在其中更新值。
>> 现在，如果用户键入 在更多的东西
比一个或多个数字 -
换句话说，某种类型的字符 -
那第二个变量c，其地址 我们传入的sscanf作为其第四
参数也将被填充。
现在检查的的上攻 从用户额外的字符是
如果他或她不配合， 并在不止一个int类型，
我们就可以检测到它在这 方式，因为在这种情况下，sscanf的
将要返回2，表示 无论是占位符填充
与值。
但我们希望sscanf的，而不是 返回1，这只能意味着用户
提供一个int。
>> 我们该怎么办，如果sscanf的 的确返回1？
好了，我们立即释放行 用户键入的，然后我们
立即返回N，有 得到一个int。
否则，如果sscanf的不返回1，并 用户因此不配合，
我们仍然可以自由线，但我们 现在提示重试用户。
而且因为我们仍然是内 否则无限循环，该过程
将重新开始，也许又和 或许再次，用户实际上直到
为我们提供了一个int。