基于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) 添加错误处理:i
和j
不应超过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中的字符串调整整数数组的主要内容,如果未能解决你的问题,请参考以下文章