我有一个程序,应该从命令行使用argc和argv文件的名称。打印argv [1]和argv [2]向我显示我传递的确切名称,但是传递argv [1]和argv [2]作为参数以在另一个函数中打开文件,只显示如果打不开的错误行文件。
我的主:用argv打开文件给我的文件NULL
int main(int argc, char* argv[])
{
if (argc != 4)
{
puts("Incorrect number of parameters.");
return 1;
}
else
{
Image *a, *b;
a = OpenFile(argv[1]);
b = OenFile(argv[2]);
} /* else */
return 0;
} /* main */
功能的OpenFile将返回充满了从文件信息的结构体。这是该功能的第一部分:
Image *OpenFile(char* name)
{
FILE* f = fopen(name, "r");
Image* imagem;
int temp, i, cont, data[MAX];
char aux[2];
if(f == NULL)
{
puts("Error opening file.");
return NULL;
} /* if */
...
}
我传递了正确的名称,但收到“错误打开文件”。为每个文件尝试打开。
编辑:它给我“没有这样的文件或目录”,但我将这些文件复制到.exe所在的目录。这不是我第一次从命令行使用文件名,但这是我第一次将参数传递给另一个函数。
从您所提供的信息很少errno.h中,合乎逻辑的结论似乎是,你的程序试图打开该文件时遇到错误。 –
请提供您传递给程序的文件的名称。我们不知道您是如何编译代码以及在构建过程之后放置可执行文件的位置。也许你的输出目录不包含你正在尝试阅读的文件。 – Kamil
当然,你传递的完全合格的绝对文件规范是完全明确的? –