【问题标题】:Adjusting integer array based on string in C基于C中的字符串调整整数数组
【发布时间】:2015-05-17 12:40:03
【问题描述】:

array 应该将每对中的第一个 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 使指针从整数而不进行强制转换

我对演员表的含义有点困惑。我觉得我把它弄混了试图补偿。

【问题讨论】:

  • inputList[p]是一个字符,atoi() 需要一个字符串,也就是char*
  • 另外:1) 修复格式 2) 添加错误处理:ij 不应超过7

标签: c arrays atoi


【解决方案1】:

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

【讨论】:

  • 好的,我不确定发生了什么,但是在我的代码中,它似乎只是部分地编辑了我的数组。我将在我最初的问题中添加我的推理。
  • 算了,我需要两个循环,我会删除它。谢谢你帮我解决了我的问题。
【解决方案2】:

试试这个:

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

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

【讨论】:

  • nm 明白了。应该使用'
  • @Jack 应该是single quote 而不是tilda
猜你喜欢
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 2022-12-29
  • 2013-05-01
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
相关资源
最近更新 更多