我正在创建一个简单的程序,用于读取文件和用户的值,然后计算该值在文件中出现的时间。到目前为止我已经做到了这一点,编译得很好,但是当你输入一个数字时,那里什么也没发生。我很难过。很抱歉,如果这是非常基本的,但我无法理解。
这是我到目前为止所做的。
#include <stdlib.h>
#include <iostream>
#include <fstream>
using namespace std;
int hold,searchnumber, counter=0;
int main()
{
cout << "This program reads the contents of a file to discover if a number you enter exists in it, and how many times. \n";
cout << "What number would you like to search for? \n";
cout << "Number : ";
cin >> searchnumber;
ifstream infile("problem2.txt");
if(!infile)
{
cout << "Can't open file problem2.txt";
exit(EXIT_FAILURE);
}
int sum=0,number;
infile >> number;
while (!infile.eof())
{
if (number == searchnumber);
counter = counter += 1;
}
{
cout << "The number " <<searchnumber << " appears in the file " << counter <<" times! \n";
cin >> hold;
}
infile.close();
}
答案 0 :(得分:4)
本节包含两个问题:
infile >> number;
while (!infile.eof())
{
if (number == searchnumber);
counter = counter += 1;
}
while
条件是真还是假,如果是真的,它会永远保持不变,这可能就是“没有发生”的原因。循环中没有任何东西可以改变infile的状态。
将前两行合并为:
while (infile >> number)
然后你至少要浏览一下这个文件。
现在,这个:
if (number == searchnumber);
counter = counter += 1;
由于if语句后面有分号,你基本上是在说“如果它是正确的号码,什么都不做”,然后更新计数器,无论你是否找到了号码。删除分号。
像往常一样,写得太多太慢。答案 1 :(得分:1)
你在这一行有一个无限循环:
while (!infile.eof())
{
if (number == searchnumber);
counter = counter += 1;
}
你打开文件并读入它上面的行,但是这个循环只会继续,直到你点击eof,但由于你没有读过任何其他东西,只要你进入循环它不是eof它永远不会退出。
答案 2 :(得分:0)
infile >> number;
while (!infile.eof())
{
if (number == searchnumber);
counter = counter += 1;
}
应该是
while (infile >> number)
{
if (number == searchnumber)
counter += 1;
}
每次比较之前,您需要从文件中读取一个数字。不要简单地在循环中读取文件。
BTW:您似乎没有使用sum
变量,请将其删除。
答案 3 :(得分:0)
1
if (number == searchnumber);
counter = counter += 1;
应该是
if (number == searchnumber)
counter = counter += 1;
2。
sum
未使用。