gpt4 book ai didi

c - 解析六边形网格

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:42 25 4
gpt4 key购买 nike

我想像下面那样解析 hexadoku 网格,并将字母或空格放入 char hexadoku[16][16];

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| h | p m o | i k | n f l |
+ + + + + + + + + + + + + + + + +
.....
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

验证第 1 行和第 3 行很容易,就像 scanf 一样(1 - 输入错误,0 - 正确):

(scanf("+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+%c", &n) != 1 || n != '\n')
(scanf("+ + + + + + + + + + + + + + + + +%c", &n) != 1 || n != '\n');

但是当我尝试阅读第二行时:

scanf("| %c   %c   %c   %c | %c   %c   %c   %c | %c   %c   %c   %c | %c   %c   %c   %c |\n",
&hexadoku[line][0], &hexadoku[line][1], &hexadoku[line][2], &hexadoku[line][3],
&hexadoku[line][4], &hexadoku[line][5], &hexadoku[line][6], &hexadoku[line][7],
&hexadoku[line][8], &hexadoku[line][9], &hexadoku[line][10], &hexadoku[line][11],
&hexadoku[line][12], &hexadoku[line][13], &hexadoku[line][14], &hexadoku[line][15])

Scanf 失败,写入了 16 个字符中的 4 个。如果我用空格替换空白字符并将其写回网格:

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| h | p m | | | |
+ + + + + + + + + + + + + + + + +
...
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

知道我的代码有什么问题以及如何解析 hexadoku 网格吗?

最佳答案

您显然想在 scanf 格式字符串中使用空格以在输入中要求精确的空格数。这是行不通的; scanf 不会那样做。当您的空白要求比这更宽松时,您实际上只能使用 scanf。

关于 scanf ( Linux man page ) 的文档来源是这样描述的。

White space (such as blanks, tabs, or newlines) in the format string match any amount of white space, including none, in the input.

因为您只是从输入中的固定位置提取字符,所以我会使用 fgets 读取整行,然后像这样将它们提取出来:

for(i=0;i<16;++i)
hexadoku[line][i] = inputline[2+4*i];

然后运行另一个循环来验证所有其他字符是否符合它们的预期('|'' ')(如果需要进行此类验证)。

关于c - 解析六边形网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com