命令行参数和文件输入C.

Cin*_*jeb 3 c parameters input command-line-arguments

我真的不知道怎么问这个......

假设我想从我的函数中读取一个文件,但我不知道我想要读取的文件名是什么,因为文件名将在我的main函数中作为命令行参数传递(argv [])

所以我的主要看起来像:

int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)

我的功能看起来像:

int get_corners(FILE *input, int size, and so on)
Run Code Online (Sandbox Code Playgroud)

我在我的功能中尝试过的:

*input = fopen(argv[1], "r");
Run Code Online (Sandbox Code Playgroud)

但是,编译器说它不识别变量argv

那么,有人可以帮助我了解如何在不在主要时调用输入文件并且必须处理命令行参数吗?

Wil*_*ill 5

首先,你不应该取消引用a FILE*,结构是不透明的.这意味着你只需传递指针.

其次你想要的是将你从命令行获得的文件名作为函数参数传递给你的函数.在C中,变量不是在运行时或编译时从其他函数的作用域继承的.

像这样的东西

int main(int argc, char* argv[])
{
   if (argc < 2)
     return 1;

   printf("%d corners\n", getCorners(argv[1]));
}


int getCorners(char* file) {
    FILE* input = fopen(file, "r");

    .. do soemthing interesting ...


    return cornerCount;
}
Run Code Online (Sandbox Code Playgroud)