伟安生,不玩蛇
安德罗妮:这不是我说的。
笔者使用的 MacBook Air,闪存大小为 256G,可用空间约 251G。使用 diskutil list
命令输出的分区表如下:
使用的是 GUID 分区表(GPT),共四个分区,分别是 EFI 引导分区、APFS 的 Mac 主分区(在更新 macOS 10.13 之前为 HFS+)、NTFS 的 Bootcamp 分区以及 Windows Recovery 分区。
在最初安装 Bootcamp 时,考虑到 Windows 系统只是用来运行某些没有 macOS 版本或无法移植到 macOS 的程序(例如《红色警戒 2》),并且 macOS 的空间本身就很紧张,Bootcamp 分区的大小仅分配了 35G。然而,在 8 月中旬昆特牌国服开启公测后,入坑的笔者发现 Bootcamp 分区的大小似乎不够用了。
笔者首先想到的是调整 Bootcamp 分区的大小,也就是从 APFS 的主分区中划出一部分空间给 Bootcamp。但是,这样做不仅存在破坏分区表的风险,而且 Mac 主分区中已经安装了 Adobe 全家桶、Autodesk Maya、XCode 等程序,256G 的闪存大小捉襟见肘,并不足以划分出较大的 Bootcamp 分区。于是只得寻求其他解决方案。比较显而易见的思路有:
这些都不是最优解。在综合了各方面的考虑后,最终选定了如下方案:
编写 C 语言控制台程序时,如果使用 scanf()
函数作为输入,往往需要解决非法输入的问题。比如以下情况:
1 | printf("输入一个0~9的整数a\n"); |
此时可能出现如下几种典型的非法输入:
对于第一种,使用 if 判断 a 的范围是否满足要求即可。第二种和第三种则较为复杂,因为其中涉及到了字符的输入。第二种情况,scanf()
会将 123 存入 a,而 xyz 留在了输入缓冲区;第三种情况,scanf()
不会读取任何数据,xyz123 都留在了输入缓冲区。
如果只是判断这一次输入的合法性,可以利用 scanf()
的返回值。如果输入有效,scanf()
会返回 1,否则返回 0。由此可以排除 scanf()
无法读取的输入。
Power of Logic 是一个推理游戏,玩家的任务是用尽可能少的时间和步骤解开密码序列。当你输入不同的数字序列时,系统会给出提示,指示你输入的数字序列中,有多少个数字正确但位置错误,又有多少个数字和位置都正确。可惜这一游戏已经不再维护和更新了,最新的 iOS 设备上甚至无法下载。不过考虑到它的核心逻辑并不复杂,笔者用 C 语言写了一个低配版。由于能力有限,只借鉴了核心逻辑,没有做图形界面。
运行效果如图:
下面附上最终版本的代码。