将FILE指针传递给函数

时间:2015-10-27 20:36:34

标签: c pointers

我在这里有点困惑,对此不太确定。我要做的是通过terminal / cmd传递一个文件的名称,该名称将被打开并从中读取。

myfunction(char* fileName, FILE* readFile)
{
    if((readFile = fopen(fileName,"r")) == NULL)
    {
        return FILE_ERROR;
    }
    return FILE_NO_ERROR;
}

int main(int argc, char **argv)
{
FILE* openReadFile;
    if(myfunction(argv[1], openReadFile) != FILE_NO_ERROR)
    {
        printf("\n %s : ERROR opening file. \n", __FUNCTION__);
    }
}

我的问题是,如果我将指针openReadFile传递给myfunction(),将readFile指向已打开文件的指针保存到openReadFile指针中,还是需要放*readFile指针。 1}}开场时。

1 个答案:

答案 0 :(得分:3)

FILE *需要是一个指针,因此在主openReadFile中保留为指针。 myfunction需要**,所以我们可以用fopen的结果更新FILE *     *readFile = fopen...更新指针。

int myfunction(char* fileName, FILE** readFile) /* pointer pointer to allow pointer to be changed */
{
    if(( *readFile = fopen(fileName,"r")) == NULL)
    {
        return FILE_ERROR;
    }
    return FILE_NO_ERROR;
}

int main(int argc, char **argv)
{
    FILE* openReadFile; /* This needs to be a pointer. */
    if(myfunction(argv[1], &openReadFile) != FILE_NO_ERROR) /* allow address to be updated */
    {
        printf("\n %s : ERROR opening file. \n", __FUNCTION__);
    }
}