c - 将 c 中 arg 的输入值添加到数独求解器的数组中

标签 c sudoku

我是 C 语言和整个编程的新手。我已经掌握了一个程序的基础知识,我正在尝试更好地掌握 C,但我在从命令行中的用户参数获取输入来填充我的数组时遇到了困难:

./sudoku.c "9...7...." "2...9..53" etc etc

我已经使用我填写的数组测试了我的程序,它可以工作,但如果我无法接受用户输入,那就不好了。我的输入看起来像这样:

grid[9][9] = {{9, 0, 0, 0, 7, 0, 0, 0, 0},
              {2, 0, 0, 0, 9, 0, 0, 5, 3}};

有什么建议吗?

任何帮助将不胜感激

最佳答案

只需用简单的循环来阅读。

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main(int argc, char* argv[]) {
    int grid[9][9];
    int input_error = 0;
    int i, j;
    if (argc != 1 + 9) { /* check number of rows in input */
        input_error = 1;
    } else {
        for (i = 0; i < 9; i++) { /* read each rows */
            if (strlen(argv[i + 1]) != 9) { /* check number of cols in input */
                input_error = 1;
                break;
            }
            for (j = 0; j < 9; j++) { /* read each cols */
                if (isdigit(argv[i + 1][j]) && argv[i + 1][j] != '0') {
                    /* digits except for 0 */
                    grid[i][j] = argv[i + 1][j] - '0'; /* convert digit to integer */
                } else if (argv[i + 1][j] == '.') {
                    /* dot */
                    grid[i][j] = 0;
                } else {
                    /* invalid character */
                    input_error = 1;
                    break;
                }
            }
        }
    }
    /* check if some errors are detected */
    if (input_error) {
        fputs("invalid usage\n", stderr);
        return 1;
    }

    /* print what is read for testing */
    for (i = 0; i < 9; i++) {
        for(j = 0; j < 9; j++) {
            printf(" %d", grid[i][j]);
        }
        putchar('\n');
    }
    return 0;
}

关于c - 将 c 中 arg 的输入值添加到数独求解器的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35967456/

相关文章:

c - 如何使用waf构建共享库?

ios - Swift 在递归函数中不返回正确的值

algorithm - 数独求解器 Scilab

c - 如何在C中输入一行?

c - 如何编译 C 程序以使二进制文件仅在不同的返回值上有所不同?

c - 如何在 C 程序中区分 Windows 7 和 Windows XP 或其他 Windows?

c++ - 我的数独解算器功能有什么问题?

c - 为什么字符串的字节大小比长度长?

python - for循环作为python中函数的输入参数

java - 数独检查器二维数组 Java