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

Posted

技术标签:

【中文标题】基于C中的字符串调整整数数组【英文标题】:Adjusting integer array based on string in 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 【参考方案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

以上是关于基于C中的字符串调整整数数组的主要内容,如果未能解决你的问题,请参考以下文章

比较c ++字符串打印中的两个整数数组

急!!!C语言:输出两组数组中相同的数字

TS:整数、字符串、数组之间的转换

将数组中的字符转换为整数

标准C语言中如何将字符串中的内容转换为字符数组?

C语言,整数数组转化为字符串