我在这里尝试从文件中获取输入。如果用户从cmd运行此.exe
并提供类似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 :(得分:1)
逻辑错误在行
中 if (argc > 0)
需要
if (argc > 1)
如果在没有参数的情况下调用程序,则 argv[1]
为NULL
。
argc
至少为1,第一个参数是程序的名称。当使用一个参数调用程序时,argc
为2,argv[1]
是第一个参数。
答案 1 :(得分:0)
当只有一个参数(总是exec文件本身,例如使用./exec_file或只是双击exec文件)时,argv [1]会抛出异常。
以下是一些提示: