C ++数组没有从文件中获取正确的输入

时间:2017-04-20 05:25:31

标签: c++ file

免责声明:我是编程的初学者,所以我说的可能听起来很愚蠢

我必须制作一个"电话簿"为了学校。该程序尚未完成,但在继续之前我还需要解决一些问题。数组TelephoneNumbers要么没有正确存储文件中的数字,要么不显示它们。对于SeaerchRecords功能,文件中的第一个数字正确显示,第二个数字显示为" 2147483647,"其余的数字显示为" 0。"修改功能也不会改变数字,我在函数中用while确认了这一点。然而,字符串数组完全正常。愿有人解释我做错了什么吗?

gradle mk

1 个答案:

答案 0 :(得分:0)

由于目前还没有任何答案,而且我现在还没有看到问题所在,我将提供一些建议,告诉您如何在代码中找到问题。 在任何编程情况下,当您无法找到错误时,首要任务是尽可能准确地找到它并检查所有输入数据和假设。通常,调试器用于此类目的,但您可以在创建程序的最终版本之前在控制台中输出文本。 首先,您必须检查您是否确实收到了文件中的姓名和电话:

inputFile.open("Telephone Names.txt");  //To store
for (int count=0;count<100;count++)     //file names
{                                       //into a
    inputFile >> TelephoneNames[count]; //string
    cout << TelephoneNames[count] << endl; //WE MUST SEE WHAT IS REALLY STORED IN TelephoneNames
}
inputFile.close();

inputFile.open("Telephone Numbers.txt");//To store
for (int count=0;count<100;count++)     //file #'s
{                                       //into a
    inputFile >> TelephoneNumbers[count];//string
    cout << TelephoneNumbers[count] << endl; //WE MUST SEE WHAT IS REALLY STORED IN TelephoneNumbers
}
inputFile.close();

好的,当它被检查并且您确定数据没有问题时,我们可以执行相同的过程转移到SeaerchRecords函数。我们必须在搜索时检查发生了什么:

for (count=0;TelephoneNames[count]!=name;count++)//To determine where in         the strings the new numbers need to be
{
    cout << "Search step: " << count << " name " << name << " found name " << TelephoneNames[count] << " number " << TelephoneNumbers[count] << endl;
}

这样做可以很快找到您的错误。问题可能是输入文件格式,而不是&#34; name&#34;和存储的名称格式等。

我还提供了一些有关如何改进代码的其他建议。 1)尝试对诸如记录数量这样常用的东西使用const声明(const int NUMBER_OF_RECORDS = 100;只是放置&#39; 100&#39;无处不在),它将减少工作量和可能的错误。 2)如果数据有问题,请尝试检查您编程可能遇到的所有问题。如果您的文件中的记录少于100条,会发生什么?程序压榨或无声读取不合适的数据,甚至更糟。检查您在阅读的任何步骤中是否达不到文件结束以及您已达到记录数量的当前检查,并在数据不合适的情况下执行某些操作。 3)检查循环条件可能出现的问题,不要无限次地运行它们。现在您的情况for(count=0;TelephoneNames[count]!=name;count++) 如果没有这样的名字,或者只是在100或更多的数量上粉碎程序,它将永远执行。您应该检查计数是否超过该值。祝你好运!