входной файл из командной строки

Я здесь, чтобы попытаться получить входные данные из файла. Если пользователь запускает это .exe из CMD и дать имя файла, как example.exe input.txt
Затем он показывает файл и читать. Но если пользователь не дает имя файла, он запускается просто как запуск программы.

Программа работает хорошо, когда я предоставляю ввод из cmd во время выполнения, она работает отлично, но если я не даю имя файла во время запуска этого файла и запускаю просто example.exe исключение покажи мне ошибку

исключение: неверный нулевой указатель

мой код здесь:

// inputfile.cpp : Defines the entry point for the console application.

#include "stdafx.h"#include<iostream>
#include<conio.h>
#include<string>
#include<fstream>

using namespace std;

void main(int argc, char* argv[])
{
try {

if (argc > 0)
{
string filename = argv[1];
ifstream in(filename);
in.open(filename);
if (in.is_open())
{
cout << "file opened, do something with file";
}
else
{
cout << endl << "You have Entered Wrong File Name Or File Not Exist in Project's Library" << endl;

}
}

}
catch (exception e)
{

}

cout << endl << "do with the simple program";

_getch();
}

0

Решение

Логическая ошибка в строке

  if (argc > 0)

Это должно быть

  if (argc > 1)

argv[1] является NULL если программа вызывается без аргументов.

argc по крайней мере 1, первым аргументом является имя программы. Когда программа вызывается с одним аргументом, argc это 2 и argv[1] это первый аргумент.

1

Другие решения

Когда есть только один аргумент (всегда сам файл exec, например, с использованием пути ./exec_file или просто двойной щелчок по файлу exec), argv [1] выдаст исключение.

Вот несколько советов:

  1. Попробуйте научиться отлаживать код (IDE, например, Visual Studio, Ecplise или GDB).
  2. VC ++ не является стандартным C ++, что означает, что он работает только на Windows, а не кроссплатформенный. Вам лучше научиться использовать компилятор g ++ (linux).
0

По вопросам рекламы [email protected]