在函数内部的C中打开一个文件并在外面使用它

时间:2015-12-27 13:54:04

标签: c file pointers

尝试在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函数之外使用这些打开的文件, 我现在这样做的方式,它们在我的main函数中是不可访问的 - 我得到NULL,如果我尝试从checkArgs函数中访问该文件它可以正常工作

2 个答案:

答案 0 :(得分:2)

你的函数定义了首先传递的outputinput秒,但你在调用函数时反向传递指针。

答案 1 :(得分:1)

您刚刚将输入传递给输出,反之亦然。 更正了您的计划如下。它应该工作。

int main(int argc, char *argv[]){

    // check args
    FILE *input = NULL;
    FILE *output = NULL;
    checkArgs(argc, argv,  &output,&input,);//corrected this line 

   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;
}