从函数C返回指针

KJ0*_*090 6 c pointers function

在我的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);
    }
}
Run Code Online (Sandbox Code Playgroud)

McP*_*inM 11

在第一行,你有

int open_text_file(char text_file_name[])
Run Code Online (Sandbox Code Playgroud)

这将返回类型声明为int 您应该拥有的内容

FILE * open_text_file(char text_file_name[])
Run Code Online (Sandbox Code Playgroud)

同样,在你的"else"情况下,你应该返回一些东西来向调用者指出错误.

return NULL
Run Code Online (Sandbox Code Playgroud)

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


小智 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
}
Run Code Online (Sandbox Code Playgroud)