我正在尝试使用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然后读取文件的内容?
答案 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],只需直接使用它......