根据C中的字符串调整整数数组

Adjusting integer array based on string in C

array 应该将每对中的第一个 0 更改为字符串输入列表中的下一个数字。

代码:

{
    int array[8][8][2]= {{{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
                {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
                {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
                {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
                {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
                {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
                {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
                {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}};
    size_t i,j,p;
    char duck;
    char inputList[66] = "01111011001111110110010110010100001011011000101111111000110100001";

    i=0;
    j=0;

    for(p=0;p<strlen(inputList);p++){
        if(i==7){
            i=0;
        }
        if(j==7){
            j=0;
        }
        duck=inputList[p];
        array[i][j][0]=atoi(duck);
        i+=1;
        j+=1;
    }



        return 0;




}

returns 与 atoi 有关的错误。这是怎么回事?

错误

passing argument 1 of ‘atoi’ makes pointer from integer without a cast

我对演员表的含义有点困惑。我觉得我为了弥补而搞砸了。

您似乎在尝试使用 atoi 来解析个位数。但是,由于 atoi 需要 C 字符串并采用 const char*,因此您不能将普通字符传递给它。您需要向它传递一个正确终止的 C 字符串。 试试这个: array[i][j][0]= duck-'0';

试试这个:

array[i][j][0] = duck - '0';

它使用 ASCII 码操作将 char duck 中的数字转换为整数。