簡體   English   中英

從函數C返回指針

[英]Return pointer from function C

在我的C程序中,這個函數將處理打開特定文件然后返回文件指針的所有工作,因此main或其他函數可以使用fp讀取內容,但到目前為止我還沒有得到這個上班。

我只是在學習這門語言,所以我有可能做錯了。

int open_text_file(char text_file_name[])
{
    FILE *fp;

    if((fp = fopen(text_file_name, "r")) != 0)
    {
            return fp;
    }

    else
    {
            printf("Cannot open file \"%s\"\n", text_file_name);
    }
}

在第一行,你有

int open_text_file(char text_file_name[])

這將返回類型聲明為int你應該擁有的是什么

FILE * open_text_file(char text_file_name[])

同樣,在你的“else”情況下,你應該返回一些東西來向調用者指出錯誤。

return NULL

是一個合適的選擇。 但是,請確保在調用時檢查返回值。

該函數有點無意義,因為它只是fopen()所做的,加上錯誤信息。 這不是好設計,因為錯誤分支還必須返回一個(可能是NULL)指針,然后必須在調用代碼中再次測試它。 更好的只是說:

FILE * fp = fopen( somefile, "r" );
if ( fp == NULL ) {
   fprintf( stderr, "Cannot open %s\n", somefile );
   exit(1);   // or whatever you need to do to handle the error
}

FILE* open_text_file(); 需要成為原型。

int不是FILE*

暫無
暫無

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

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