划分argv参数并写入数组

时间:2017-07-16 16:46:53

标签: c arrays terminal argv

基本上它是一个数独谜题,我们让程序通过控制台运行

每个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被允许。

1 个答案:

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