从函数C返回指针

时间:2009-12-11 21:51:49

标签: c pointers function

在我的C程序中,此函数将处理打开特定文件然后返回文件指针的所有工作,因此主函数或其他函数可以使用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);
    }
}

3 个答案:

答案 0 :(得分:11)

在第一行,你有

int open_text_file(char text_file_name[])

这将返回类型声明为int 你应该拥有的是

FILE * open_text_file(char text_file_name[])

同样,在你的“其他”情况下,你应该返回一些东西来表明 给来电者一个错误。

return NULL

是一个合适的选择。但是,请确保在调用时检查返回值。

答案 1 :(得分:6)

该函数有点无意义,因为它只是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
}

答案 2 :(得分:0)

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

int不是FILE*