Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 数独游戏:如何测试包含读取二进制文件的代码_C - Fatal编程技术网

C 数独游戏:如何测试包含读取二进制文件的代码

C 数独游戏:如何测试包含读取二进制文件的代码,c,C,我被指派创建一个数独游戏,9x9表应该从二进制文件中获取第一个设置。每个注册表包含以下格式的3个字节: 1st字节是行 第二个字节是列 3rd字节是我们希望在上述组合中输入的数字 例如:069 在第一行和第七列,我们把数字放在9 我的问题是,当我唯一的选择是创建一个二进制文件并再次读取它时,我应该如何测试代码(?)。首先,创建自己的测试文件存储库有什么不好?您甚至可以用bash或其他语言编写程序,在所有输入文件上自动运行数独游戏,以检查代码是否仍然有效 但是,如果您使用的是文件*指针,则很可

我被指派创建一个数独游戏,9x9表应该从二进制文件中获取第一个设置。每个注册表包含以下格式的3个字节:

  • 1st字节是
  • 第二个字节是
  • 3rd字节是我们希望在上述组合中输入的数字
例如:069

在第一行和第七列,我们把数字放在9


我的问题是,当我唯一的选择是创建一个二进制文件并再次读取它时,我应该如何测试代码(?)。

首先,创建自己的测试文件存储库有什么不好?您甚至可以用bash或其他语言编写程序,在所有输入文件上自动运行数独游戏,以检查代码是否仍然有效

但是,如果您使用的是
文件*
指针,则很可能可以在测试代码中使用
fmemopen
来创建内存中的流,您可以使用
fread


如果您使用的是
fd
s,则可以使用
pipe
执行类似操作。在一端写,从另一端读。

好吧,我想你最终会写一个数独问题编辑器:-)。。。因为所有数据都存储在3字节的记录中,所以不应该那么难。您还可以创建一个简单的读取器,一次读取一行
并将其以正确的格式存储在磁盘上为什么文件需要是二进制文件?即使你有81个条目,每个条目有3位数字和一个换行符,它也是一个很小的文件,你也不会有像81个条目那样的内容。因此,您应该以使用文本文件为目标。如果您认为必须使用二进制文件,您可以通过创建一个程序进行测试,该程序接受文本文件并创建二进制文件。二进制文件中的每个项有多大-1字节、2字节、4字节?如果它是一个字节,它是被编码为48到57范围内的数字值(
'0'
'9'
),还是被编码为字节值(
'\000'
'\011'
-或
'\x0'
'\x9'
)?@JonathanLeffler我认为它必须是二进制的,因为它是一个赋值:P,它可能是一个单字节,因此可以很容易地通过TA:P进行验证。赋值必须使用二进制文件,没有例外。插入之后,程序使用递归来解决这个难题。因此,记录的数量是未知的。我认为加载数据的最简单方法是将文件的内容加载到适当大小的缓冲区中,在这种情况下,它看起来是9*9*3字节。定义一个包含三个无符号字符成员的压缩结构:x、y和value。将缓冲区强制转换为指向此类型的指针,您可以简单地打印出值。出于测试目的,执行相同但相反的操作,并将其读出。如果需要,请使用十六进制编辑器进行验证。