【发布时间】:2015-02-11 21:14:19
【问题描述】:
我目前正在研究数独验证器,我这样做的方法是将每一行分成一个长度为 9 的数组并检查,将每一列分成一个长度为 9 的数组并检查,等等。我已经完成了行已经在做这样的事情
for( i=0; i<9; i++)
fscanf(file, "%1d", &row1[i]);
for( i=0; i<9; i++)
fscanf(file, "%1d", &row2[i]);
for( i=0; i<9; i++)
fscanf(file, "%1d", &row3[i]);
for( i=0; i<9; i++)
fscanf(file, "%1d", &row4[i]);
它也按照我想要的方式工作。
我的数独解决方案中的每个数字都由一个空格分隔,在我的文件中水平和垂直相邻。
但是,我在尝试将每一列扫描成一个数组时遇到了麻烦。基本上我认为我需要做的是第一列从第一个(左上角)字符开始并将其存储到我的数组的第一个槽中。然后我需要跳过 9 个字符,然后存储该字符。
我认为我可以做类似的事情
for( i=0; i<82; i += 9)
fscanf(file, "%1d", &col1[i]);
for( i=1; i<82; i+=9)
fscanf(file, "%1d", &col2[i]);
for( i=2; i<82; i+=9)
fscanf(file, "%1d", &col3[i]);
for( i=3; i<82; i+=9)
fscanf(file, "%1d", &col4[i]);
for( i=4; i<82; i+=9)
但我意识到它不起作用,因为我已将数组设置为 9 的大小,并且由于我正在插入数组中的第 i 个值,因此它的行为不会像它想要的那样。
谁能给我一个建议,我该如何实现它?我认为这是相当微不足道的,但我很难理解它。
谢谢
编辑:我还需要为该区域执行此操作,所以我基本上是在寻找一种方法来跳过文件并仅存储我想要的某些字符。
【问题讨论】:
-
您必须检查您是否真的在扫描这些值,简而言之检查
fscanf()的返回值。