繁体   English   中英

读入数字但停在负C ++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM