[英]Read in Numbers but Stop at Negative C++
我想做的是从文本文件(当前称为“输入”)中读取数字。 我正在创建两个数组,一个数组用于整数,一个数组用于浮点数。 数组中的最大项数设置为50,但是最小值是1。程序停止读取数字的标识符是int值中的任何负数。
我不确定为什么,但是当我读回数组时,会打印出数字,跳过最后的负数,然后为剩余的插槽(最多50个)打印出乱码。
任何意见,将不胜感激。
void Read(ifstream &input, int studentID[], float score[])
{
int curID;
float curScore;
for (int i = 0; i < 50; i++)
{
input >> curID >> curScore;
if (curID < 0)
{
return;
}
else
{
studentID[i] = curID;
score[i] = curScore;
}
}
}
if (curID < 0)
{
return;
}
这是因为如果遇到负数,则算法不会将该负数存储在studentID[i]
。
结果, studentID
仍然从第一个无效位置开始包含未初始化的值。 没有魔力标记,也没有计数器返回,您将无法重构输入的结尾。
更正您的代码
int Read(ifstream & input, int studentID[], float score[])
{
int curID, i = 0;
float curScore;
while (i < 50) {
input >> curID >> curScore;
if (curID < 0)
break;
else {
studentID[i] = curID;
score[i++] = curScore;
}
}
return i; // This value will be useful while printing the contents
}
为避免产生混乱的输出,仅迭代直到成功读取为止,即返回Read(...)
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.