我是 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/