在C中调整基于字符串的整数数组

时间:2015-05-17 12:40:03

标签: c arrays atoi

数组应该将每对中的前0个更改为字符串inputlist中的下一个数字。

代码

{
    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;




}

返回与atoi有关的错误。发生了什么事?

错误

  

传递'atoi'的参数1使得整数指针没有强制转换

我对施法的含义感到有些困惑。我觉得我试图弥补它的混乱。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

试试这个:

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

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