基本上它是一个数独谜题,我们让程序通过控制台运行
每个Argv参数由9个数字(一个点可以替换丢失的数字)组成,这些数字写入二维数组,如下所示:
./sudoku "9...7...." "2...9..53" ".6..124.." "84...1.9." "5.....8.." ".31..4..." "..37..68."
".9..5.741" "47......."
,数组值必须为:
array[0][0] = 9, array[0][1] = 0, ..., array[8][0] = 4, ...
主要片段:
int main(int argc, char **argv)
{
int s_f[9][9];
int i;
int j;
i = 1;
j = 0;
if (argc != 10)
write(1, "Error\n", 6);
else
{
然后我会尝试使用的代码:
while (i < 10)
{
j = 0;
while(j < 9)
{
s_f[i - 1][j] = write(1, &(argv[i][j]), 1);
j++;
}
write(1, "\n", 1);
i++;
}
write(1, "\n", 1);
}
如果参数中有零而不是数字,则应将其替换为零。
有关如何读取Argv参数并将它们放入int的任何想法,那么继续寻找解决方案会更容易吗?
P.S。唯一允许的功能是写,malloc 和免费。
P.P.S。 Atoi被允许。
答案 0 :(得分:-1)
所以解决方案是
int main(int argc, char **argv)
{
int s_f[9][9];
int i;
int j;
i = 1;
j = 0;
if (argc != 10)
write(1, "Error\n", 6);
else
{
while (i < 10)
{
j = 0;
while(j < 9)
{
if (ft_strcmp(&argv[i][j], ".") == 0)
s_f[i - 1][j] = 0;
else
s_f[i - 1][j] = argv[i][j] - '0';
j++;
}
i++;
}
}
i = 0;
j = 0;
while (i < 9)
{
while (j < 9)
{
if (s_f[i][j] == -2)
s_f[i][j] = 0;
j++;
}
i++;
j = 0;
}
i = 0;
j = 0;
while (i < 9)
{
while (j < 9)
{
if (j != 8)
printf("%d ", s_f[i][j]);
else
printf("%d", s_f[i][j]);
j++;
}
i++;
j = 0;
printf("\n");
}
return (0);
}