代码之家  ›  专栏  ›  技术社区  ›  Pukanium

分割argv参数并写入数组

  •  -1
  • Pukanium  · 技术社区  · 7 年前

    基本上这是一个数独游戏,我们通过控制台运行程序

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

    如果参数中有零而不是数字,则应将其替换为零。

    P、 S.唯一允许的函数是 自由的 .

    P、 允许使用P.S.Atoi。

    1 回复  |  直到 7 年前
        1
  •  -1
  •   Pukanium    7 年前

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