C ++: программа зависла при чтении файла. Зачем? - PullRequest
0 голосов
/ 12 ноября 2011

Я пытаюсь скомпилировать программное обеспечение C ++ с Visual Studio.

Для запуска программы я использую следующую командную строку:

ABC 0.85  x.txt < x.txt

Программное обеспечение выглядит следующим образом:

int main(int argc, char ** argv)
{
//main variables
float min_sup = atof(argv[1]);          //minimum support
string filename = argv[2];              //input file name

cout << "Hello" << argv << " " << endl;

if(argc < 2)
{
    cout << "[Error] Usage: <min> <input file> < <input file>" << endl;
    cout << "E.g: ./ABC.exe 0.85 input.txt < input.txt" << endl;
    system("PAUSE");
    return 1;
}

//checking min_sup value
if(min_sup <= 0 || min_sup >= 1)
{
    cout << "[Error] Minimum  must be between 0 and 1 exclusively." << endl;
    system("PAUSE");
    return 1;
}

int in_buf;
while(cin >> in_buf)
{

    .....

Когда я запускаю программное обеспечение, оно застревает на:

 while(cin >>  in_buf)

Знаете ли вы, в чем проблема?Это проблема с тем, как файл читается?

Я запускаю код в Windows 7 64 бит.

Ответы [ 2 ]

1 голос
/ 12 ноября 2011
ABC 0.85  x.txt < x.txt
                 ^

У вас есть дополнительное место.Вы передаете программе три параметра.Вам нужны два параметра и перенаправление потока.

ABC 0.85  x.txt <x.txt

Вы можете отобразить argc, чтобы проверить это.

Зачем программе нужно имя файла параметра "x.txt"?Я не могу придумать причину, по которой тебе это нужно.Кроме того, вы не должны читать аргументы до тех пор, пока после не подтвердите счет.

0 голосов
/ 12 ноября 2011

Возникла проблема с файлом. Я нашел проблему.

...