Я здесь, чтобы попытаться получить входные данные из файла. Если пользователь запускает это .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();
}
Логическая ошибка в строке
if (argc > 0)
Это должно быть
if (argc > 1)
argv[1]
является NULL
если программа вызывается без аргументов.
argc
по крайней мере 1, первым аргументом является имя программы. Когда программа вызывается с одним аргументом, argc
это 2 и argv[1]
это первый аргумент.
Когда есть только один аргумент (всегда сам файл exec, например, с использованием пути ./exec_file или просто двойной щелчок по файлу exec), argv [1] выдаст исключение.
Вот несколько советов: