如何将纯文本文件作为命令行参数传递

时间:2014-12-14 02:34:06

标签: c++ c

我正在尝试通过命令行将文件传递给我的c ++程序。我正在尝试的是:

g++ main.cpp quadTree.h Rectangle.h quadTree.cpp Rectangle.cpp obstacles_copy.txt -lX11 -lm -L/usr/X11R6/lib

我一直收到这个错误:

/usr/bin/ld:obstacles_copy.txt: file format not recognized;
treating as linker script
/usr/bin/ld:obstacles_copy.txt:1: syntax error
collect2: error: ld returned 1 exit status**

我使用

在main()中打开文件
FILE *fp=fopen(argv[1],"r");

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

当你说"传递文件"时,你的意思是什么?

在您的示例中,您正在尝试将文本文件编译为二进制文件,这会给您带来问题。

您应该在运行时将文件名作为命令行参数传入,或者使用cmd < file将文件输入到您的标准输入。

要在运行时传入文件,您可以使用./myprogram filename在bash中调用您的程序,然后在main中,您可以访问argv[1]的文件名,确保处理argc == 1

的情况

答案 1 :(得分:3)

先编译

g++ main.cpp quadTree.h Rectangle.h quadTree.cpp Rectangle.cpp -lX11 -lm -L/usr/X11R6/lib

然后执行

./a.out obstacles_copy.txt 

如果你想将文本文件构建到二进制文件中,可以通过使用objcopy将其转换为gcc将理解的格式来完成,但是这样转换它将是一个内存对象(一个很大的char数组)而不是文件。和fopen fgets等文件操作不起作用。