划分argv参数,写入数组
Divide argv parameters and write in array
基本上就是数独,我们通过控制台得到程序运行
每个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。唯一允许的函数是 write、malloc 和 free.
P.P.S。允许 Atoi。
所以解决方案是
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);
}
基本上就是数独,我们通过控制台得到程序运行
每个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。唯一允许的函数是 write、malloc 和 free.
P.P.S。允许 Atoi。
所以解决方案是
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);
}