簡體   English   中英

將FILE指針傳遞給函數

[英]Passing FILE pointer to a function

我對此有些困惑,對此不太確定。 我想做的是通過將打開並讀取的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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM