数组值在C++中自行更改
Array values changing by themselves in C++
在下面的程序中,我正在读取一个 6 长度的字符串 dd 并将其 ascii 代码存储在大小为 3x2 的整数数组 ipc 中。问题是存储在 ipc 中的值是错误的,稍后当我重新打印它们时,它们会自行更改。我很惊讶这么简单的代码怎么会有这么明显的问题。(我在Win7 x64上使用代码::块10.05)
#include<iostream>
using namespace std;
int main()
{ char dd[5];
int ipc[2][1];
cin.get(dd,6);
for(int i=0;i<3;i++)
{ for(int j=0;j<2;j++)
{ ipc[i][j]=int(dd[j+2*i]);
cout<<ipc[i][j]<<endl;
}
}
cout<<"------"<<endl;
for(int i=0;i<3;i++)
{ for(int j=0;j<2;j++)
{ cout<<ipc[i][j]<<endl; }
}
}
如果给定的输入123456,则输出为:
49
50
51
52
53
2
------
49
51
51
53
53
2
任何形式的帮助将不胜感激。谢谢。
数组
声明不正确,代码在数组上越界,导致未定义的行为。声明应从:
int ipc[2][1];
自:
int ipc[3][2];
此外,cin.get()
将读取count - 1
字符,因此:
cin.get(dd, 6);
只会读取5
字符,不会读取6
.如果用户输入123456
则只会读取12345
。cin.get()
还将附加一个空字符(如 tinman 所评论的那样)。要更正增加dd
的大小和要读取的字符数,请执行以下操作:
char buf[7];
cin.get(buf, 7);
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '