为什么我的单行输入仅通过循环部分读取
Why is my single line input only partially read by the loop?
首先,我在字符'geotype'
中获得开关的输入char geotype;
cin>>geotype;
然后,我得到点数的数量,然后是单个坐标,带有for循环。
如果我的代码:
,这是有问题的部分int i;
double xp[n], yp[n];
switch(geotype):
{
.
.
.
case 'P':
cin>>n;
for(i=0; i<n; ++i)
{
cin >> xp[i] >> yp[i];
cout << "i = " << i <<" ";
cout <<"xp = " << xp[i] <<" yp = "<< yp[i]<<endl;
}
.
.
.
break;
.
.
.
}
我的输入是:
P 2 3 -2 -1 4
我的输出是:
i = 0 xp = -2 yp = -2
i = 1 xp = 4 yp = 4
为什么3&amp;-1跳过?
另外,如何-2&amp;4重复,因为它们仅在输入中发生一次。
预先感谢!
我想这是错误:
double xp[n], yp[n];
因此,您的n
可能是目前的0,并且创建零尺寸的数组。由于它们的尺寸为零,因此yp = xp + 0 = xp
的位置。因此,yp
和xp
指向同一位置。由于没有绑定检查,因此您在范围之外写作,并且xp[i]
的位置与yp[i]
相同。
解决方案是
int* xp, *yp;
// When handling P
xp = new int[n];
yp = new int[n];
或更好地使用向量。
相关文章:
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 虽然循环不读取整个 ifstream 文件
- 如何使用循环逐个读取C++中的多个文件
- 是否可以在文本文件中找到最长单词的长度,并在同一个文本文件中读取,只需 1 个 while 循环?
- For 循环在尝试读取数组 c++ 时程序崩溃
- 从文件 C++ 读取时的无限循环
- 从文件读取,并循环访问文件以写入数组
- C++:从文件中读取x y数据会产生无限循环吗
- 在嵌套循环中读取文件
- 为什么我的单行输入仅通过循环部分读取
- 如果语句内部循环不读取完全正确的代表显示错误
- 如何使递归函数在进入下一级循环之前读取每个新实例
- 因为每个循环都读取数组错误
- 为什么这段代码最终会进入一个无限循环,读取std::cin
- 在 c++ 中循环字符串读取器
- 无法在循环中读取Char/string
- 我用什么样的循环来读取文件
- 在c++中逐字循环时读取行尾
- c++ 终止 while 循环,读取带有'|'的数字