划分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、mallocfree.

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);
}