【问题标题】:Divide argv parameters and write in array除以argv参数并写入数组
【发布时间】:2017-07-16 16:46:53
【问题描述】:

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

每个 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 的任何想法,以便继续寻找解决方案会更容易?

附:唯一允许的函数是 write、mallocfree

附言允许使用 Atoi。

【问题讨论】:

标签: c arrays terminal argv


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 2017-02-17
    • 2023-03-29
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2013-01-25
    • 2015-04-08
    • 2014-03-17
    相关资源
    最近更新 更多