使用argv读取文本文件

时间:2016-07-27 16:48:03

标签: c++ c++11 visual-c++ argv argc

我正在尝试使用argv [1]读取文本文件。在我的代码中,构建argc后只保留1,这意味着没有检测到文件。请参阅下面的代码:

#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
 int main(int argc, char **argv) {
    char msg[256]={0};
    if (argc < 2){
        cout<<"file not found";
    }
    if(argc > 1){
        strcpy(msg,argv[1]);
    }
     FILE *file;
     if ((file = fopen(argv[1], "r")) == NULL)
         {
             printf("file doesnt exist\n");
         }
     fclose(file);

    cout<<argv[1];

}

我无法弄清楚如何获得argc的值大于1然后读取文件的内容?

2 个答案:

答案 0 :(得分:0)

  

argc仅为1表示未检测到文件

如果argc为1,则表示没有(程序行)参数被赋予程序。我建议您更改响应消息以反映这一点。

  

如何获得argc的值大于1

您需要将参数传递给程序。在命令行中,您可以这样执行:

> ./program_file_name value_of_first_argument

如果从IDE启动程序,请查阅IDE手册,了解如何为启动设置命令行参数。

请注意,如果参数在程序中超过256个字符,则缓冲区溢出且行为未定义。

答案 1 :(得分:0)

您是否尝试将文件拖放到应用程序中?应该给你argv [1],如果拖放不起作用(应该有效),那就出问题了

或尝试使用FULL PATH,你真的不需要复制argv [1],只需直接使用它......