【发布时间】:2015-12-27 13:54:04
【问题描述】:
试图在 c: 函数中打开文件:
int main(int argc, char *argv[]){
// check args
FILE *input = NULL;
FILE *output = NULL;
checkArgs(argc, argv, &input, &output);
if (input != NULL){
paresInputFile(input);
}else{
printf("NULL");
}
void checkArgs(int argc, char *argv[], FILE **output, FILE **input){
// validate arguments...
*input = fopen(argv[2],"r");
return;
}
我得到了一些命令行参数.. 我正在使用一个验证它们的函数,如果它们没问题,我会尝试打开 2 个文件,一个用于输出,一个用于输入,
如何在我的 checkArgs 函数之外使用这些打开的文件, 我现在这样做的方式是,它们在我的主函数中是不可访问的 - 我得到 NULL,如果我尝试从我的 checkArgs 函数中访问该文件,它工作正常
【问题讨论】:
-
我想这可以说明为什么通常不推荐使用所谓的“输出参数”:它会让人很难直接看到函数的实际作用。此代码的替代方法可能是使
checkArgs函数按值返回struct args { FILE *input; FILE *output; }...